| 
					
				 | 
			
			
				@@ -1240,6 +1240,7 @@ should_generate_v2_networkstatus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static uint32_t stable_uptime = 0; /* start at a safe value */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 static uint32_t fast_bandwidth = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+static uint32_t guard_bandwidth = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /** Return 1 if <b>router</b> is not suitable for these parameters, else 0. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  * If <b>need_uptime</b> is non-zero, we require a minimum uptime. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1295,9 +1296,12 @@ dirserv_compute_performance_thresholds(routerlist_t *rl) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     stable_uptime = *(uint32_t*)smartlist_get(uptimes, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                               smartlist_len(uptimes)/2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  if (smartlist_len(bandwidths)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (smartlist_len(bandwidths)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     fast_bandwidth = *(uint32_t*)smartlist_get(bandwidths, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                               smartlist_len(bandwidths)/2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                               smartlist_len(bandwidths)/8); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    guard_bandwidth = *(uint32_t*)smartlist_get(bandwidths, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                                smartlist_len(bandwidths)/2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   log_info(LD_DIRSERV, "Uptime cutoff is %lu seconds.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            (unsigned long)stable_uptime); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1419,7 +1423,8 @@ generate_v2_networkstatus(void) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                       ri->cache_info.identity_digest); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       int f_named = naming && ri->is_named; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       int f_valid = ri->is_valid; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      int f_guard = f_fast && f_stable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      int f_guard = f_fast && f_stable && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                           ri->bandwidthcapacity > guard_bandwidth; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       /* 0.1.1.9-alpha is the first version to support fetch by descriptor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        * hash. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       int f_v2_dir = ri->dir_port && 
			 |