|  | @@ -212,7 +212,7 @@ static uint16_t
 | 
	
		
			
				|  |  |  decide_next_handshake_type(void)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |    /* The number of times we've chosen ntor lately when both were available. */
 | 
	
		
			
				|  |  | -  static unsigned int recently_chosen_ntors = 0;
 | 
	
		
			
				|  |  | +  static int recently_chosen_ntors = 0;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    if (!ol_entries[ONION_HANDSHAKE_TYPE_NTOR])
 | 
	
		
			
				|  |  |      return ONION_HANDSHAKE_TYPE_TAP; /* no ntors? try tap */
 | 
	
	
		
			
				|  | @@ -227,7 +227,8 @@ decide_next_handshake_type(void)
 | 
	
		
			
				|  |  |       * got here first. In any case this edge case will only become relevant
 | 
	
		
			
				|  |  |       * once tap is rare. We should reevaluate whether we like this decision
 | 
	
		
			
				|  |  |       * once tap gets more rare. */
 | 
	
		
			
				|  |  | -    if (ol_entries[ONION_HANDSHAKE_TYPE_NTOR])
 | 
	
		
			
				|  |  | +    if (ol_entries[ONION_HANDSHAKE_TYPE_NTOR] &&
 | 
	
		
			
				|  |  | +        recently_chosen_ntors <= num_ntors_per_tap())
 | 
	
		
			
				|  |  |        ++recently_chosen_ntors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      return ONION_HANDSHAKE_TYPE_NTOR; /* no taps? try ntor */
 |