|  | @@ -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
 |