diff options
-rw-r--r-- | src/or/nodelist.c | 9 | ||||
-rw-r--r-- | src/or/routerparse.c | 8 |
2 files changed, 12 insertions, 5 deletions
diff --git a/src/or/nodelist.c b/src/or/nodelist.c index abbe15ecc2..e900b51455 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -800,9 +800,14 @@ node_supports_v3_hsdir(const node_t *node) if (node->ri->protocol_list == NULL) { return 0; } + /* Bug #22447 forces us to filter on tor version: + * If platform is a Tor version, and older than 0.3.0.8, return False. + * Else, obey the protocol list. */ if (node->ri->platform) { - /* Bug #22447 forces us to filter on this version. */ - return tor_version_as_new_as(node->ri->platform, "0.3.0.8"); + if (!strcmpstart(node->ri->platform, "Tor ") && + !tor_version_as_new_as(node->ri->platform, "0.3.0.8")) { + return 0; + } } return protocol_list_supports_protocol(node->ri->protocol_list, PRT_HSDIR, PROTOVER_HSDIR_V3); 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]); |