| 
														
															@@ -31,6 +31,9 @@ static int router_nickname_is_in_list(routerinfo_t *router, const char *list); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static int router_nickname_matches(routerinfo_t *router, const char *nickname); 
														 | 
														
														 | 
														
															 static int router_nickname_matches(routerinfo_t *router, const char *nickname); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static void routerstatus_list_update_from_networkstatus(time_t now); 
														 | 
														
														 | 
														
															 static void routerstatus_list_update_from_networkstatus(time_t now); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static void local_routerstatus_free(local_routerstatus_t *rs); 
														 | 
														
														 | 
														
															 static void local_routerstatus_free(local_routerstatus_t *rs); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static void trusted_dir_server_free(trusted_dir_server_t *ds); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static void update_networkstatus_cache_downloads(time_t now); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static void update_networkstatus_client_downloads(time_t now); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /****************************************************************************/ 
														 | 
														
														 | 
														
															 /****************************************************************************/ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -63,6 +66,11 @@ static smartlist_t *warned_nicknames = NULL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * and that are still conflicted. */ 
														 | 
														
														 | 
														
															  * and that are still conflicted. */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static smartlist_t *warned_conflicts = NULL; 
														 | 
														
														 | 
														
															 static smartlist_t *warned_conflicts = NULL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/* DOCDOC */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static time_t last_routerdesc_download_attempted = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/* DOCDOC */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static time_t last_networkstatus_download_attempted = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /*DOCDOC*/ 
														 | 
														
														 | 
														
															 /*DOCDOC*/ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static int have_warned_about_unverified_status = 0; 
														 | 
														
														 | 
														
															 static int have_warned_about_unverified_status = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 static int have_warned_about_old_version = 0; 
														 | 
														
														 | 
														
															 static int have_warned_about_old_version = 0; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -482,6 +490,15 @@ mark_all_trusteddirservers_up(void) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       dir->n_networkstatus_failures = 0; 
														 | 
														
														 | 
														
															       dir->n_networkstatus_failures = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     }); 
														 | 
														
														 | 
														
															     }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  last_networkstatus_download_attempted = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/** Reset all internal variables used to count failed downloads of network 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ * status objects. */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+router_reset_status_download_failures(void) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  mark_all_trusteddirservers_up(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /** Return 0 if \\exists an authoritative dirserver that's currently 
														 | 
														
														 | 
														
															 /** Return 0 if \\exists an authoritative dirserver that's currently 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1078,7 +1095,7 @@ routerlist_free_all(void) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (trusted_dir_servers) { 
														 | 
														
														 | 
														
															   if (trusted_dir_servers) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds, 
														 | 
														
														 | 
														
															     SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ds, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                      { tor_free(ds->address); tor_free(ds); }); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                      trusted_dir_server_free(ds)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     smartlist_free(trusted_dir_servers); 
														 | 
														
														 | 
														
															     smartlist_free(trusted_dir_servers); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     trusted_dir_servers = NULL; 
														 | 
														
														 | 
														
															     trusted_dir_servers = NULL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1679,20 +1696,19 @@ router_get_combined_status_by_digest(const char *digest) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * asking each trusted directory for its network-status.  For caches, this means 
														 | 
														
														 | 
														
															  * asking each trusted directory for its network-status.  For caches, this means 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * asking a random authority for all network-statuses. 
														 | 
														
														 | 
														
															  * asking a random authority for all network-statuses. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  */ 
														 | 
														
														 | 
														
															  */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-void 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 update_networkstatus_cache_downloads(time_t now) 
														 | 
														
														 | 
														
															 update_networkstatus_cache_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  static time_t last_downloaded = 0; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int authority = authdir_mode(get_options()); 
														 | 
														
														 | 
														
															   int authority = authdir_mode(get_options()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int interval = 
														 | 
														
														 | 
														
															   int interval = 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     authority ? AUTHORITY_NS_CACHE_INTERVAL : NONAUTHORITY_NS_CACHE_INTERVAL; 
														 | 
														
														 | 
														
															     authority ? AUTHORITY_NS_CACHE_INTERVAL : NONAUTHORITY_NS_CACHE_INTERVAL; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  if (last_downloaded + interval >= now) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (last_networkstatus_download_attempted + interval >= now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return; 
														 | 
														
														 | 
														
															     return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (!trusted_dir_servers) 
														 | 
														
														 | 
														
															   if (!trusted_dir_servers) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return; 
														 | 
														
														 | 
														
															     return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  last_downloaded = now; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  last_networkstatus_download_attempted = now; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (authority) { 
														 | 
														
														 | 
														
															   if (authority) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /* An authority launches a separate connection for everybody. */ 
														 | 
														
														 | 
														
															     /* An authority launches a separate connection for everybody. */ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1734,7 +1750,7 @@ update_networkstatus_cache_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * by launching a new directory fetch for enough network-status documents "as 
														 | 
														
														 | 
														
															  * by launching a new directory fetch for enough network-status documents "as 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * necessary".  See function comments for implementation details. 
														 | 
														
														 | 
														
															  * necessary".  See function comments for implementation details. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  */ 
														 | 
														
														 | 
														
															  */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-void 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+static void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 update_networkstatus_client_downloads(time_t now) 
														 | 
														
														 | 
														
															 update_networkstatus_client_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int n_live = 0, needed = 0, n_running_dirservers, n_dirservers, i; 
														 | 
														
														 | 
														
															   int n_live = 0, needed = 0, n_running_dirservers, n_dirservers, i; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -1829,6 +1845,17 @@ update_networkstatus_client_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   tor_free(resource); 
														 | 
														
														 | 
														
															   tor_free(resource); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/*DOCDOC*/ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+update_networkstatus_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  or_options_t *options = get_options(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  if (server_mode(options) && options->DirPort) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      update_networkstatus_cache_downloads(time(NULL)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      update_networkstatus_client_downloads(time(NULL)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /** Decide whether a given addr:port is definitely accepted, 
														 | 
														
														 | 
														
															 /** Decide whether a given addr:port is definitely accepted, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * definitely rejected, probably accepted, or probably rejected by a 
														 | 
														
														 | 
														
															  * definitely rejected, probably accepted, or probably rejected by a 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  * given policy.  If <b>addr</b> is 0, we don't know the IP of the 
														 | 
														
														 | 
														
															  * given policy.  If <b>addr</b> is 0, we don't know the IP of the 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -2069,18 +2096,23 @@ add_trusted_dir_server(const char *nickname, const char *address, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   smartlist_add(trusted_dir_servers, ent); 
														 | 
														
														 | 
														
															   smartlist_add(trusted_dir_servers, ent); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+/** Free storage held in <b>ds</b> */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+trusted_dir_server_free(trusted_dir_server_t *ds) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+{ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  tor_free(ds->nickname); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  tor_free(ds->description); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  tor_free(ds->address); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  tor_free(ds); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 /** Remove all members from the list of trusted dir servers. */ 
														 | 
														
														 | 
														
															 /** Remove all members from the list of trusted dir servers. */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void 
														 | 
														
														 | 
														
															 void 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 clear_trusted_dir_servers(void) 
														 | 
														
														 | 
														
															 clear_trusted_dir_servers(void) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 { 
														 | 
														
														 | 
														
															 { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (trusted_dir_servers) { 
														 | 
														
														 | 
														
															   if (trusted_dir_servers) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ent, 
														 | 
														
														 | 
														
															     SMARTLIST_FOREACH(trusted_dir_servers, trusted_dir_server_t *, ent, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tor_free(ent->nickname); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tor_free(ent->description); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tor_free(ent->address); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        tor_free(ent); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      }); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                      trusted_dir_server_free(ent)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     smartlist_clear(trusted_dir_servers); 
														 | 
														
														 | 
														
															     smartlist_clear(trusted_dir_servers); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } else { 
														 | 
														
														 | 
														
															   } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     trusted_dir_servers = smartlist_create(); 
														 | 
														
														 | 
														
															     trusted_dir_servers = smartlist_create(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -2655,13 +2687,12 @@ update_router_descriptor_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int get_all = 0; 
														 | 
														
														 | 
														
															   int get_all = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int dirserv = server_mode(get_options()) && get_options()->DirPort; 
														 | 
														
														 | 
														
															   int dirserv = server_mode(get_options()) && get_options()->DirPort; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   int should_delay, n_downloadable; 
														 | 
														
														 | 
														
															   int should_delay, n_downloadable; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  static time_t last_download_attempted = 0; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (!networkstatus_list || smartlist_len(networkstatus_list)<2) 
														 | 
														
														 | 
														
															   if (!networkstatus_list || smartlist_len(networkstatus_list)<2) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     get_all = 1; 
														 | 
														
														 | 
														
															     get_all = 1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (get_all) { 
														 | 
														
														 | 
														
															   if (get_all) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     log_fn(LOG_NOTICE, "Launching request for all routers"); 
														 | 
														
														 | 
														
															     log_fn(LOG_NOTICE, "Launching request for all routers"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    last_download_attempted = now; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    last_routerdesc_download_attempted = now; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,"all.z",1); 
														 | 
														
														 | 
														
															     directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,"all.z",1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return; 
														 | 
														
														 | 
														
															     return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -2673,10 +2704,10 @@ update_router_descriptor_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   else if (n_downloadable == 0) 
														 | 
														
														 | 
														
															   else if (n_downloadable == 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     should_delay = 1; 
														 | 
														
														 | 
														
															     should_delay = 1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   else if (dirserv) 
														 | 
														
														 | 
														
															   else if (dirserv) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    should_delay = (last_download_attempted + 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    should_delay = (last_routerdesc_download_attempted + 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     MAX_SERVER_INTERVAL_WITHOUT_REQUEST) < now; 
														 | 
														
														 | 
														
															                     MAX_SERVER_INTERVAL_WITHOUT_REQUEST) < now; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   else 
														 | 
														
														 | 
														
															   else 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    should_delay = (last_download_attempted + 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    should_delay = (last_routerdesc_download_attempted + 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     MAX_CLIENT_INTERVAL_WITHOUT_REQUEST) < now; 
														 | 
														
														 | 
														
															                     MAX_CLIENT_INTERVAL_WITHOUT_REQUEST) < now; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   if (! should_delay) { 
														 | 
														
														 | 
														
															   if (! should_delay) { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -2707,7 +2738,7 @@ update_router_descriptor_downloads(time_t now) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       memcpy(cp-1, ".z", 3); 
														 | 
														
														 | 
														
															       memcpy(cp-1, ".z", 3); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,resource,1); 
														 | 
														
														 | 
														
															       directory_get_from_dirserver(DIR_PURPOSE_FETCH_SERVERDESC,resource,1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    last_download_attempted = now; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    last_routerdesc_download_attempted = now; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     tor_free(resource); 
														 | 
														
														 | 
														
															     tor_free(resource); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   SMARTLIST_FOREACH(downloadable, char *, c, tor_free(c)); 
														 | 
														
														 | 
														
															   SMARTLIST_FOREACH(downloadable, char *, c, tor_free(c)); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -2743,5 +2774,6 @@ router_reset_descriptor_download_failures(void) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     rs->n_download_failures = 0; 
														 | 
														
														 | 
														
															     rs->n_download_failures = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     rs->next_attempt_at = 0; 
														 | 
														
														 | 
														
															     rs->next_attempt_at = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   }); 
														 | 
														
														 | 
														
															   }); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  last_routerdesc_download_attempted = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |