diff options
author | George Kadianakis <desnacked@riseup.net> | 2017-08-03 16:08:17 +0300 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-08-08 20:29:34 -0400 |
commit | 440eaa9b22573cdb0d38bf5c13200cc1077a453f (patch) | |
tree | e8da7041293100baa38324734ab82975152b62a8 /src/or/routerparse.c | |
parent | a561a10da726b426d326515ca7f75988b405bab7 (diff) | |
download | tor-440eaa9b22573cdb0d38bf5c13200cc1077a453f.tar.gz tor-440eaa9b22573cdb0d38bf5c13200cc1077a453f.zip |
Correctly assign HSDir flags based on protocol list
In Nick's words:
"We want to always return false if the platform is a Tor version, and it
is not as new as 0.3.0.8 -- but if the platform is not a Tor version, or
if the version is as new as 0.3.0.8, then we want to obey the protocol
list.
That way, other implementations of our protocol won't have to claim any
particular Tor version, and future versions of Tor will have the freedom
to drop this protocol in the distant future."
Diffstat (limited to 'src/or/routerparse.c')
-rw-r--r-- | src/or/routerparse.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/or/routerparse.c b/src/or/routerparse.c index ec63aef4d4..db42a44ee4 100644 --- a/src/or/routerparse.c +++ b/src/or/routerparse.c @@ -2706,7 +2706,8 @@ routerstatus_parse_entry_from_string(memarea_t *area, rs->supports_ed25519_hs_intro = protocol_list_supports_protocol(tok->args[0], PRT_HSINTRO, 4); rs->supports_v3_hsdir = - protocol_list_supports_protocol(tok->args[0], PRT_HSDIR, 2); + protocol_list_supports_protocol(tok->args[0], PRT_HSDIR, + PROTOVER_HSDIR_V3); } if ((tok = find_opt_by_keyword(tokens, K_V))) { tor_assert(tok->n_args == 1); @@ -2720,8 +2721,9 @@ routerstatus_parse_entry_from_string(memarea_t *area, } if (!strcmpstart(tok->args[0], "Tor ") && found_protocol_list) { /* Bug #22447 forces us to filter on this version. */ - rs->supports_v3_hsdir = - tor_version_as_new_as(tok->args[0], "0.3.0.8"); + if (!tor_version_as_new_as(tok->args[0], "0.3.0.8")) { + rs->supports_v3_hsdir = 0; + } } if (vote_rs) { vote_rs->version = tor_strdup(tok->args[0]); |