]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
node: Make node_supports_v3_rendezvous_point() also check for the key
authorDavid Goulet <dgoulet@torproject.org>
Thu, 20 Sep 2018 12:50:27 +0000 (08:50 -0400)
committerDavid Goulet <dgoulet@torproject.org>
Wed, 24 Oct 2018 14:30:26 +0000 (10:30 -0400)
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>
changes/ticket27797 [new file with mode: 0644]
src/or/nodelist.c

diff --git a/changes/ticket27797 b/changes/ticket27797
new file mode 100644 (file)
index 0000000..f07e35f
--- /dev/null
@@ -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.
index fcd5e0220bccb7eeeeaaaf91ba59e3141a1db300..032e8d669fa4b58e4133bd273d93304ee8de40ba 100644 (file)
@@ -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;
 }