commit f6efb3a184341b5b46c8a565e2ec297d2846e45c
parent 2d6f00e45b3003337242704e0fde2d2adbaa6cf5
Author: teor <teor@torproject.org>
Date: Thu, 9 Apr 2020 11:05:59 +1000
Merge branch 'pr1854_squashed' into maint-0.4.3
Squashed PR 1854, and fixed a minor typo (IPv4 -> IPv6).
Diffstat:
4 files changed, 13 insertions(+), 7 deletions(-)
diff --git a/changes/ticket33804 b/changes/ticket33804
@@ -0,0 +1,7 @@
+ o Minor bugfixes (client, SocksPort, IPv6):
+ - Revert PreferIPv6 set by default on the SocksPort because it brokes the
+ torsocks use case. Tor doesn't have a way for an application to request
+ the hostname to be resolved for a specific IP version but torsocks
+ requires that. Up until now, IPv4 was used by default so it is expecting
+ that, and can't handle a possible IPv6 being returned. Fixes bug 33804;
+ bugfix on 0.4.3.1-alpha.
diff --git a/doc/tor.1.txt b/doc/tor.1.txt
@@ -1492,10 +1492,9 @@ The following options are useful only for clients (that is, if
requests on this connection. This option is only relevant when SOCKS5
is in use, because SOCKS4 can't handle IPv6. (Allowing IPv6 is the
default.)
- **NoPreferIPv6**;;
+ **PreferIPv6**;;
Tells exits that, if a host has both an IPv4 and an IPv6 address,
- we would prefer to connect to it via IPv4. (IPv6 is the default in
- recent versions of Tor.)
+ we would prefer to connect to it via IPv6. (IPv4 is the default.)
**NoDNSRequest**;;
Do not ask exits to resolve DNS addresses in SOCKS5 requests. Tor will
connect to IPv4 addresses, IPv6 addresses (if IPv6Traffic is set) and
@@ -1537,7 +1536,7 @@ The following options are useful only for clients (that is, if
When serving a hostname lookup request on this port that
should get automapped (according to AutomapHostsOnResolve),
if we could return either an IPv4 or an IPv6 answer, prefer
- an IPv4 answer. (Tor prefers IPv6 by default.)
+ an IPv4 answer. (Tor prefers IPv4 by default.)
**PreferSOCKSNoAuth**;;
Ordinarily, when an application offers both "username/password
authentication" and "no authentication" to Tor via SOCKS5, Tor
diff --git a/src/app/config/config.c b/src/app/config/config.c
@@ -5886,7 +5886,7 @@ port_cfg_new(size_t namelen)
port_cfg_t *cfg = tor_malloc_zero(sizeof(port_cfg_t) + namelen + 1);
cfg->entry_cfg.ipv4_traffic = 1;
cfg->entry_cfg.ipv6_traffic = 1;
- cfg->entry_cfg.prefer_ipv6 = 1;
+ cfg->entry_cfg.prefer_ipv6 = 0;
cfg->entry_cfg.dns_request = 1;
cfg->entry_cfg.onion_traffic = 1;
cfg->entry_cfg.prefer_ipv6_virtaddr = 1;
@@ -6134,7 +6134,7 @@ port_parse_config(smartlist_t *out,
/* This must be kept in sync with port_cfg_new's defaults */
int no_listen = 0, no_advertise = 0, all_addrs = 0,
bind_ipv4_only = 0, bind_ipv6_only = 0,
- ipv4_traffic = 1, ipv6_traffic = 1, prefer_ipv6 = 1, dns_request = 1,
+ ipv4_traffic = 1, ipv6_traffic = 1, prefer_ipv6 = 0, dns_request = 1,
onion_traffic = 1,
cache_ipv4 = 0, use_cached_ipv4 = 0,
cache_ipv6 = 0, use_cached_ipv6 = 0,
diff --git a/src/test/test_config.c b/src/test/test_config.c
@@ -4159,7 +4159,7 @@ test_config_parse_port_config__ports__ports_given(void *data)
tt_int_op(port_cfg->entry_cfg.dns_request, OP_EQ, 1);
tt_int_op(port_cfg->entry_cfg.ipv4_traffic, OP_EQ, 1);
tt_int_op(port_cfg->entry_cfg.ipv6_traffic, OP_EQ, 1);
- tt_int_op(port_cfg->entry_cfg.prefer_ipv6, OP_EQ, 1);
+ tt_int_op(port_cfg->entry_cfg.prefer_ipv6, OP_EQ, 0);
tt_int_op(port_cfg->entry_cfg.onion_traffic, OP_EQ, 1);
tt_int_op(port_cfg->entry_cfg.cache_ipv4_answers, OP_EQ, 0);
tt_int_op(port_cfg->entry_cfg.prefer_ipv6_virtaddr, OP_EQ, 1);