Quellcode durchsuchen

Report common reasons for rejecting a relay before uncommon ones

"You're running 0.2.2; upgrade!" is more sensible than "You have no
ntor key!"

Closes ticket 20270; bugfix on 0.2.9.3-alpha.
Nick Mathewson vor 7 Jahren
Ursprung
Commit
ff7e8531ec
2 geänderte Dateien mit 14 neuen und 3 gelöschten Zeilen
  1. 6 0
      changes/bug20270
  2. 8 3
      src/or/dirserv.c

+ 6 - 0
changes/bug20270

@@ -0,0 +1,6 @@
+  o Minor bugfixes (directory authority):
+    - When rejecting a router descriptor because the relay is running an
+      obsolete version of Tor without ntor support, warn about the obsolete
+      tor version, not the missing ntor key. Fixes bug 20270;
+      bugfix on 0.2.9.3-alpha.
+

+ 8 - 3
src/or/dirserv.c

@@ -274,6 +274,13 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
     return FP_REJECT;
   }
 
+  /* Check for the more usual versions to reject a router first. */
+  const uint32_t r = dirserv_get_status_impl(d, router->nickname,
+                                             router->addr, router->or_port,
+                                             router->platform, msg, severity);
+  if (r)
+    return r;
+
   /* dirserv_get_status_impl already rejects versions older than 0.2.4.18-rc,
    * and onion_curve25519_pkey was introduced in 0.2.4.8-alpha.
    * But just in case a relay doesn't provide or lies about its version, or
@@ -324,9 +331,7 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
     }
   }
 
-  return dirserv_get_status_impl(d, router->nickname,
-                                 router->addr, router->or_port,
-                                 router->platform, msg, severity);
+  return 0;
 }
 
 /** Return true if there is no point in downloading the router described by