| 
					
				 | 
			
			
				@@ -367,6 +367,15 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               strmap_size(fingerprint_list->fp_by_name), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				               digestmap_size(fingerprint_list->status_by_digest)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  /* 0.1.1.17-rc was the first version that claimed to be stable, doesn't 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * crash and drop circuits all the time, and is even vaguely compatible with 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+   * the current network */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  if (platform && !tor_version_as_new_as(platform,"0.1.1.17-rc")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if (msg) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      *msg = "Tor version is far too old to work."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return FP_REJECT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   result = dirserv_get_name_status(id_digest, nickname); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (result & FP_NAMED) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if (should_log) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -437,10 +446,6 @@ dirserv_get_status_impl(const char *id_digest, const char *nickname, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         *msg = "Authdir rejects unknown routers."; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       return FP_REJECT; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    /* 0.1.0.2-rc was the first version that did enough self-testing that 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-     * we're willing to take its word about whether it's running. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    if (platform && !tor_version_as_new_as(platform,"0.1.0.2-rc")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      result |= FP_INVALID; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   return result; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2035,7 +2040,6 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                  int listbadexits, int listbaddirs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   int unstable_version = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    tor_version_as_new_as(ri->platform,"0.1.1.10-alpha") && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     !tor_version_as_new_as(ri->platform,"0.1.1.16-rc-cvs"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   memset(rs, 0, sizeof(routerstatus_t)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -2079,10 +2083,7 @@ set_routerstatus_from_routerinfo(routerstatus_t *rs, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   rs->is_bad_exit = listbadexits && ri->is_bad_exit; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   ri->is_hs_dir = dirserv_thinks_router_is_hs_dir(ri, now); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   rs->is_hs_dir = ri->is_hs_dir; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  /* 0.1.1.9-alpha is the first version to support fetch by descriptor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-   * hash. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  rs->is_v2_dir = ri->dir_port && 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    tor_version_as_new_as(ri->platform,"0.1.1.9-alpha"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  rs->is_v2_dir = ri->dir_port != 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   if (!strcasecmp(ri->nickname, UNNAMED_ROUTER_NICKNAME)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     rs->is_named = rs->is_unnamed = 0; 
			 |