| 
					
				 | 
			
			
				@@ -494,8 +494,7 @@ circuit_expire_building(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cutoff = begindir_cutoff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cutoff = close_cutoff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCING || 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    else if (victim->purpose == CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cutoff = c_intro_cutoff; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     else if (victim->purpose == CIRCUIT_PURPOSE_S_ESTABLISH_INTRO) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cutoff = s_intro_cutoff; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -614,12 +613,13 @@ circuit_expire_building(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           TO_ORIGIN_CIRCUIT(victim)->path_state = PATH_STATE_USE_FAILED; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case CIRCUIT_PURPOSE_C_INTRODUCING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          /* We keep old introducing circuits around for 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           * a while in parallel, and they can end up "opened". 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           * We decide below if we're going to mark them timed 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           * out and eventually close them. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-           */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          /* That purpose means that the intro point circuit has been opened 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           * succesfully but the INTRODUCE1 cell hasn't been sent yet because 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           * the client is waiting for the rendezvous point circuit to open. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           * Keep this circuit open while waiting for the rendezvous circuit. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           * We let the circuit idle timeout take care of cleaning this 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+           * circuit if it never used. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case CIRCUIT_PURPOSE_C_ESTABLISH_REND: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT: 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -713,8 +713,6 @@ circuit_expire_building(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             NULL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* fallthrough! */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      case CIRCUIT_PURPOSE_C_INTRODUCING: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /* connection_ap_handshake_attach_circuit() will relaunch for us */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       case CIRCUIT_PURPOSE_C_INTRODUCE_ACK_WAIT: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       case CIRCUIT_PURPOSE_C_REND_READY_INTRO_ACKED: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /* If we have reached this line, we want to spare the circ for now. */ 
			 |