summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2018-03-27 07:04:33 -0400
committerNick Mathewson <nickm@torproject.org>2018-03-27 07:04:33 -0400
commit46c2b0ca228d2d95666f28d4e42411dce0a59e15 (patch)
tree68fbbb98aff2d0c96359debcc2e0269a504c8228
parent841ed9dbb982d5b0ffb9a5b17b1e4bf2e02f95f2 (diff)
parent969a38a375f4e71fcb27bb24e36047824d0f3cc9 (diff)
downloadtor-46c2b0ca228d2d95666f28d4e42411dce0a59e15.tar.gz
tor-46c2b0ca228d2d95666f28d4e42411dce0a59e15.zip
Merge branch 'bug25213_033' into maint-0.3.3
-rw-r--r--changes/bug252135
-rw-r--r--src/or/circuitbuild.c14
-rw-r--r--src/test/test_hs_service.c4
3 files changed, 21 insertions, 2 deletions
diff --git a/changes/bug25213 b/changes/bug25213
new file mode 100644
index 0000000000..bb196ca724
--- /dev/null
+++ b/changes/bug25213
@@ -0,0 +1,5 @@
+ o Minor bugfixes (warnings, ipv6):
+ - Avoid a bug warning that could occur when trying to connect to
+ a relay over IPv6 on a Tor instance that downloads router descriptors,
+ but prefers to use microdescriptors. Fixes bug 25213; bugfix on
+ 0.3.3.1-alpha.
diff --git a/src/or/circuitbuild.c b/src/or/circuitbuild.c
index 8fe6ba0e60..01921bac15 100644
--- a/src/or/circuitbuild.c
+++ b/src/or/circuitbuild.c
@@ -2857,8 +2857,18 @@ extend_info_from_node(const node_t *node, int for_direct_connect)
tor_addr_port_t ap;
int valid_addr = 0;
- if (node->ri == NULL && (node->rs == NULL || node->md == NULL))
- return NULL;
+ const int is_bridge = node_is_a_configured_bridge(node);
+ const int we_use_mds = we_use_microdescriptors_for_circuits(get_options());
+
+ if (is_bridge || !we_use_mds) {
+ /* We need an ri in this case. */
+ if (!node->ri)
+ return NULL;
+ } else {
+ /* Otherwise we need an md. */
+ if (node->rs == NULL || node->md == NULL)
+ return NULL;
+ }
/* Choose a preferred address first, but fall back to an allowed address.
* choose_address returns 1 on success, but get_prim_orport returns 0. */
diff --git a/src/test/test_hs_service.c b/src/test/test_hs_service.c
index d62fcc8cab..2e5280610f 100644
--- a/src/test/test_hs_service.c
+++ b/src/test/test_hs_service.c
@@ -1237,6 +1237,10 @@ test_build_update_descriptors(void *arg)
node->is_running = node->is_valid = node->is_fast = node->is_stable = 1;
}
+ /* We have to set thise, or the lack of microdescriptors for these
+ * nodes will make them unusable. */
+ get_options_mutable()->UseMicrodescriptors = 0;
+
/* We expect to pick only one intro point from the node above. */
setup_full_capture_of_logs(LOG_INFO);
update_all_descriptors(now);