Merge remote-tracking branch 'linus/bug6757'

This commit is contained in:
Nick Mathewson 2012-10-04 10:31:25 -04:00
commit 03e4b5a9d7
3 changed files with 20 additions and 16 deletions

5
changes/6757 Normal file
View File

@ -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.

View File

@ -5663,15 +5663,9 @@ rewrite_node_address_for_bridge(const bridge_info_t *bridge, node_t *node)
}
}
/* Mark bridge as preferably connected to over IPv6 if its IPv6
address is in a Bridge line and ClientPreferIPv6ORPort is
set. Unless both is true, a potential IPv6 OR port of this
bridge won't get selected.
XXX ipv6_preferred is never reset (#6757) */
if (get_options()->ClientPreferIPv6ORPort == 1 &&
tor_addr_family(&bridge->addr) == AF_INET6)
node->ipv6_preferred = 1;
/* Mark which address to use based on which bridge_t we got. */
node->ipv6_preferred = (tor_addr_family(&bridge->addr) == AF_INET6 &&
!tor_addr_is_null(&node->ri->ipv6_addr));
/* XXXipv6 we lack support for falling back to another address for
the same relay, warn the user */

View File

@ -872,18 +872,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