aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/or/nodelist.c9
-rw-r--r--src/or/routerparse.c8
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]);