diff options
author | David Goulet <dgoulet@torproject.org> | 2017-08-30 10:13:22 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2017-09-07 08:35:28 -0400 |
commit | c527cde82f74849ec3b183159d20441019b77e2e (patch) | |
tree | 4a11946ed0460378926fbbf991079c3d66cc0562 /src/or/nodelist.c | |
parent | 209bfe715cc8c1c59b2578c406749a0d4a5bd8cb (diff) | |
download | tor-c527cde82f74849ec3b183159d20441019b77e2e.tar.gz tor-c527cde82f74849ec3b183159d20441019b77e2e.zip |
prop224: Pick rendezvous point of protover HSRend=2
Version 3 hidden service needs rendezvous point that have the protocol version
HSRend >= 2 else the rendezvous cells are rejected.
Fixes #23361
Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/or/nodelist.c')
-rw-r--r-- | src/or/nodelist.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/or/nodelist.c b/src/or/nodelist.c index 6acc87f967..f670870f61 100644 --- a/src/or/nodelist.c +++ b/src/or/nodelist.c @@ -863,6 +863,28 @@ node_supports_ed25519_hs_intro(const node_t *node) return 0; } +/** Return true iff <b>node</b> supports to be a rendezvous point for hidden + * service version 3 (HSRend=2). */ +int +node_supports_v3_rendezvous_point(const node_t *node) +{ + tor_assert(node); + + if (node->rs) { + return node->rs->supports_v3_rendezvous_point; + } + if (node->ri) { + if (node->ri->protocol_list == NULL) { + return 0; + } + return protocol_list_supports_protocol(node->ri->protocol_list, + PRT_HSREND, + PROTOVER_HS_RENDEZVOUS_POINT_V3); + } + tor_assert_nonfatal_unreached_once(); + return 0; +} + /** Return the RSA ID key's SHA1 digest for the provided node. */ const uint8_t * node_get_rsa_id_digest(const node_t *node) |