| 
					
				 | 
			
			
				@@ -549,6 +549,7 @@ circuit_handle_first_hop(origin_circuit_t *circ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_debug(LD_CIRC,"Conn open. Delivering first onion skin."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if ((err_reason = circuit_send_next_onion_skin(circ)) < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       log_info(LD_CIRC,"circuit_send_next_onion_skin failed."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      circ->base_.n_chan = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return err_reason; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -660,18 +661,18 @@ circuit_deliver_create_cell(circuit_t *circ, const create_cell_t *create_cell, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     static ratelim_t circid_warning_limit = RATELIM_INIT(9600); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_fn_ratelim(&circid_warning_limit, LOG_WARN, LD_CIRC, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    "failed to get unique circID."); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    goto error; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  log_debug(LD_CIRC,"Chosen circID %u.", (unsigned)id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  circuit_set_n_circid_chan(circ, id, circ->n_chan); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memset(&cell, 0, sizeof(cell_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   r = relayed ? create_cell_format_relayed(&cell, create_cell) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               : create_cell_format(&cell, create_cell); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (r < 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     log_warn(LD_CIRC,"Couldn't format create cell"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    goto error; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  log_debug(LD_CIRC,"Chosen circID %u.", (unsigned)id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  circuit_set_n_circid_chan(circ, id, circ->n_chan); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   cell.circ_id = circ->n_circ_id; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   append_cell_to_circuit_queue(circ, circ->n_chan, &cell, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -695,6 +696,9 @@ circuit_deliver_create_cell(circuit_t *circ, const create_cell_t *create_cell, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ error: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  circ->n_chan = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** We've decided to start our reachability testing. If all 
			 |