|  | @@ -2418,6 +2418,13 @@ choose_random_entry(cpath_build_state_t *state)
 | 
	
		
			
				|  |  |        r = entry_is_live(entry, need_uptime, need_capacity, 0);
 | 
	
		
			
				|  |  |        if (r && !smartlist_isin(exit_family, r)) {
 | 
	
		
			
				|  |  |          smartlist_add(live_entry_guards, r);
 | 
	
		
			
				|  |  | +        if (!entry->made_contact) {
 | 
	
		
			
				|  |  | +          /* Always start with the first not-yet-contacted entry
 | 
	
		
			
				|  |  | +           * guard. Otherwise we might add several new ones, pick
 | 
	
		
			
				|  |  | +           * the second new one, and now we've expanded our entry
 | 
	
		
			
				|  |  | +           * guard list without needing to. */
 | 
	
		
			
				|  |  | +          goto choose_and_finish;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          if (smartlist_len(live_entry_guards) >= options->NumEntryGuards)
 | 
	
		
			
				|  |  |            break; /* we have enough */
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -2451,6 +2458,7 @@ choose_random_entry(cpath_build_state_t *state)
 | 
	
		
			
				|  |  |      /* live_entry_guards may be empty below. Oh well, we tried. */
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | + choose_and_finish:
 | 
	
		
			
				|  |  |    r = smartlist_choose(live_entry_guards);
 | 
	
		
			
				|  |  |    smartlist_free(live_entry_guards);
 | 
	
		
			
				|  |  |    smartlist_free(exit_family);
 |