summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2018-09-20 08:50:27 -0400
committerDavid Goulet <dgoulet@torproject.org>2018-10-24 10:30:26 -0400
commitb063ca0604d6cc99adf1009818c10ee14d006aab (patch)
tree2fdb441ead2679cb4cbc06487aef9fb513810251
parentfd6078b33a0a174a060a2ae90e9455e6f0ee6fe9 (diff)
downloadtor-b063ca0604d6cc99adf1009818c10ee14d006aab.tar.gz
tor-b063ca0604d6cc99adf1009818c10ee14d006aab.zip
node: Make node_supports_v3_rendezvous_point() also check for the key
It is not enough to look at protover for v3 rendezvous support but also we need to make sure that the curve25519 onion key is present or in other words that the descriptor has been fetched and does contain it. Fixes #27797. Signed-off-by: David Goulet <dgoulet@torproject.org>
-rw-r--r--changes/ticket277975
-rw-r--r--src/or/nodelist.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/changes/ticket27797 b/changes/ticket27797
new file mode 100644
index 0000000000..f07e35f84c
--- /dev/null
+++ b/changes/ticket27797
@@ -0,0 +1,5 @@
+ o Minor bugfixes (node, hidden service v3):
+ - When selecting a v3 rendezvous point, not only look at the protover but
+ also if the curve25519 onion key is present. That way we avoid picking a
+ node that supports the v3 rendezvous but for which we don't have the
+ descriptor yet for the key. Fixes bug 27797; bugfix on 0.3.2.1-alpha.
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index fcd5e0220b..032e8d669f 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -1153,6 +1153,11 @@ node_supports_v3_rendezvous_point(const node_t *node)
{
tor_assert(node);
+ /* We can't use a v3 rendezvous point without the curve25519 onion pk. */
+ if (!node_get_curve25519_onion_key(node)) {
+ return 0;
+ }
+
return node_get_protover_summary_flags(node)->supports_v3_rendezvous_point;
}