diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-03-27 07:04:33 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-03-27 07:04:33 -0400 |
commit | 46c2b0ca228d2d95666f28d4e42411dce0a59e15 (patch) | |
tree | 68fbbb98aff2d0c96359debcc2e0269a504c8228 /src/or | |
parent | 841ed9dbb982d5b0ffb9a5b17b1e4bf2e02f95f2 (diff) | |
parent | 969a38a375f4e71fcb27bb24e36047824d0f3cc9 (diff) | |
download | tor-46c2b0ca228d2d95666f28d4e42411dce0a59e15.tar.gz tor-46c2b0ca228d2d95666f28d4e42411dce0a59e15.zip |
Merge branch 'bug25213_033' into maint-0.3.3
Diffstat (limited to 'src/or')
-rw-r--r-- | src/or/circuitbuild.c | 14 |
1 files changed, 12 insertions, 2 deletions
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. */ |