summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--changes/67575
-rw-r--r--src/or/nodelist.c19
2 files changed, 17 insertions, 7 deletions
diff --git a/changes/6757 b/changes/6757
new file mode 100644
index 0000000000..6b17f951d1
--- /dev/null
+++ b/changes/6757
@@ -0,0 +1,5 @@
+ o Minor bugfixes (client):
+ - Make clients running with IPv6 bridges connect over IPv6 again,
+ even without setting new config options ClientUseIPv6 and
+ ClientPreferIPv6ORPort.
+ Fixes bug 6757; bugfix on 0.2.4.1-alpha.
diff --git a/src/or/nodelist.c b/src/or/nodelist.c
index c357bc0474..421db8edc0 100644
--- a/src/or/nodelist.c
+++ b/src/or/nodelist.c
@@ -873,18 +873,23 @@ node_get_prim_orport(const node_t *node, tor_addr_port_t *ap_out)
void
node_get_pref_orport(const node_t *node, tor_addr_port_t *ap_out)
{
+ const or_options_t *options = get_options();
tor_assert(ap_out);
/* Cheap implementation of config option ClientUseIPv6 -- simply
- don't prefer IPv6 when ClientUseIPv6 is not set. (See #4455 for
- more on this subject.) Note that this filter is too strict since
- we're hindering not only clients! Erring on the safe side
- shouldn't be a problem though. XXX move this check to where
- outgoing connections are made? -LN */
- if (get_options()->ClientUseIPv6 == 1 && node_ipv6_preferred(node))
+ don't prefer IPv6 when ClientUseIPv6 is not set and we're not a
+ client running with bridges. See #4455 for more on this subject.
+
+ Note that this filter is too strict since we're hindering not
+ only clients! Erring on the safe side shouldn't be a problem
+ though. XXX move this check to where outgoing connections are
+ made? -LN */
+ if ((options->ClientUseIPv6 || options->UseBridges) &&
+ node_ipv6_preferred(node)) {
node_get_pref_ipv6_orport(node, ap_out);
- else
+ } else {
node_get_prim_orport(node, ap_out);
+ }
}
/** Copy the preferred IPv6 OR port (IP address and TCP port) for