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.
This commit is contained in:
Nick Mathewson 2017-05-09 10:28:05 -04:00
parent 0df22e8f5f
commit ff7e8531ec
2 changed files with 14 additions and 3 deletions

6
changes/bug20270 Normal file
View File

@ -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.

View File

@ -274,6 +274,13 @@ dirserv_router_get_status(const routerinfo_t *router, const char **msg,
return FP_REJECT; 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, /* 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. * 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 * 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, return 0;
router->addr, router->or_port,
router->platform, msg, severity);
} }
/** Return true if there is no point in downloading the router described by /** Return true if there is no point in downloading the router described by