[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [tor/master] Fix ipv4/ipv6 traffic bits on AF_UNIX socks listeners and remove hacky workarounds for brokenness
commit cb047f40786bf87f7fb17a500ca35eca9ba34f7c
Author: Andrea Shepard <andrea@xxxxxxxxxxxxxx>
Date: Tue Jan 13 00:18:17 2015 +0000
Fix ipv4/ipv6 traffic bits on AF_UNIX socks listeners and remove hacky workarounds for brokenness
---
src/or/config.c | 14 ++++++++++++++
src/or/connection_edge.c | 6 +-----
src/or/relay.c | 3 +--
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/src/or/config.c b/src/or/config.c
index aea0498..219200f 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -6053,6 +6053,20 @@ parse_unix_socket_config(smartlist_t *out, smartlist_t *defaults,
port->is_unix_addr = 1;
memcpy(port->unix_addr, cfg->value, len+1);
port->type = listener_type;
+ if (listener_type == CONN_TYPE_AP_LISTENER) {
+ /* Some more bits to twiddle for this case
+ *
+ * XXX this should support parsing the same options
+ * parse_port_config() does, and probably that code should be
+ * factored out into a function we can call from here. For
+ * now, some reasonable defaults.
+ */
+
+ port->ipv4_traffic = 1;
+ port->ipv6_traffic = 1;
+ port->cache_ipv4_answers = 1;
+ port->cache_ipv6_answers = 1;
+ }
smartlist_add(ports_to_add, port);
} else {
/* Keep track that we've seen a disable */
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c
index 390ad07..d8f397b 100644
--- a/src/or/connection_edge.c
+++ b/src/or/connection_edge.c
@@ -1233,8 +1233,7 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
{
tor_addr_t addr;
/* XXX Duplicate call to tor_addr_parse. */
- if (tor_addr_parse(&addr, socks->address) >= 0 &&
- !conn->is_socks_socket) {
+ if (tor_addr_parse(&addr, socks->address) >= 0) {
sa_family_t family = tor_addr_family(&addr);
if ((family == AF_INET && ! conn->ipv4_traffic_ok) ||
(family == AF_INET6 && ! conn->ipv4_traffic_ok)) {
@@ -1837,9 +1836,6 @@ connection_ap_get_begincell_flags(entry_connection_t *ap_conn)
if (!ap_conn->ipv4_traffic_ok)
flags |= BEGIN_FLAG_IPV4_NOT_OK;
- if (ap_conn->is_socks_socket)
- return 0;
-
exitnode = node_get_by_id(cpath_layer->extend_info->identity_digest);
if (ap_conn->ipv6_traffic_ok && exitnode) {
diff --git a/src/or/relay.c b/src/or/relay.c
index b7ab808..ac36e72 100644
--- a/src/or/relay.c
+++ b/src/or/relay.c
@@ -1328,8 +1328,7 @@ connection_edge_process_relay_cell_not_open(
}
if (((family == AF_INET && ! entry_conn->ipv4_traffic_ok) ||
- (family == AF_INET6 && ! entry_conn->ipv6_traffic_ok)) &&
- (!entry_conn->is_socks_socket)) {
+ (family == AF_INET6 && ! entry_conn->ipv6_traffic_ok))) {
log_fn(LOG_PROTOCOL_WARN, LD_APP,
"Got a connected cell to %s with unsupported address family."
" Closing.", fmt_addr(&addr));
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits