Browse Source

but only do the rapid reachability testing if we're hoping to be a server.

svn:r3902
Roger Dingledine 20 years ago
parent
commit
9b5432214d
2 changed files with 8 additions and 3 deletions
  1. 4 3
      src/or/main.c
  2. 4 0
      src/or/router.c

+ 4 - 3
src/or/main.c

@@ -510,7 +510,6 @@ get_status_fetch_period(or_options_t *options)
     return 30*60;
 }
 
-
 /** This function is called whenever we successfully pull down a directory.
  * If <b>identity_digest</b> is defined, it contains the digest of the
  * router that just gave us this directory. */
@@ -532,7 +531,8 @@ void directory_has_arrived(time_t now, char *identity_digest) {
   if (!time_to_fetch_running_routers)
     time_to_fetch_running_routers = now + get_status_fetch_period(options);
 
-  if (identity_digest) { /* if this is us, then our dirport is reachable */
+  if (server_mode(options) && identity_digest) {
+    /* if this is us, then our dirport is reachable */
     routerinfo_t *router = router_get_by_digest(identity_digest);
     if (!router) // XXX
       log_fn(LOG_WARN,"Bug: router_get_by_digest doesn't find me.");
@@ -713,7 +713,8 @@ static void run_scheduled_events(time_t now) {
     consider_publishable_server(now, 0);
     /* also, check religiously for reachability, if it's within the first
      * 20 minutes of our uptime. */
-    if (stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT)
+    if (server_mode(options) &&
+        stats_n_seconds_working < TIMEOUT_UNTIL_UNREACHABILITY_COMPLAINT)
       consider_testing_reachability();
   }
 

+ 4 - 0
src/or/router.c

@@ -392,6 +392,10 @@ int check_whether_ports_reachable(void) {
 
 void consider_testing_reachability(void) {
   routerinfo_t *me = router_get_my_routerinfo();
+  if (!me) {
+    log_fn(LOG_WARN,"Bug: router_get_my_routerinfo() did not find my routerinfo?");
+    return;
+  }
 
   if (!can_reach_or_port) {
     circuit_launch_by_router(CIRCUIT_PURPOSE_TESTING, me, 0, 0, 1);