mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Fix ipv4/ipv6 traffic bits on AF_UNIX socks listeners and remove hacky workarounds for brokenness
This commit is contained in:
parent
f50068b17e
commit
cb047f4078
@ -6053,6 +6053,20 @@ parse_unix_socket_config(smartlist_t *out, smartlist_t *defaults,
|
|||||||
port->is_unix_addr = 1;
|
port->is_unix_addr = 1;
|
||||||
memcpy(port->unix_addr, cfg->value, len+1);
|
memcpy(port->unix_addr, cfg->value, len+1);
|
||||||
port->type = listener_type;
|
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);
|
smartlist_add(ports_to_add, port);
|
||||||
} else {
|
} else {
|
||||||
/* Keep track that we've seen a disable */
|
/* Keep track that we've seen a disable */
|
||||||
|
@ -1233,8 +1233,7 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
|
|||||||
{
|
{
|
||||||
tor_addr_t addr;
|
tor_addr_t addr;
|
||||||
/* XXX Duplicate call to tor_addr_parse. */
|
/* XXX Duplicate call to tor_addr_parse. */
|
||||||
if (tor_addr_parse(&addr, socks->address) >= 0 &&
|
if (tor_addr_parse(&addr, socks->address) >= 0) {
|
||||||
!conn->is_socks_socket) {
|
|
||||||
sa_family_t family = tor_addr_family(&addr);
|
sa_family_t family = tor_addr_family(&addr);
|
||||||
if ((family == AF_INET && ! conn->ipv4_traffic_ok) ||
|
if ((family == AF_INET && ! conn->ipv4_traffic_ok) ||
|
||||||
(family == AF_INET6 && ! 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)
|
if (!ap_conn->ipv4_traffic_ok)
|
||||||
flags |= BEGIN_FLAG_IPV4_NOT_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);
|
exitnode = node_get_by_id(cpath_layer->extend_info->identity_digest);
|
||||||
|
|
||||||
if (ap_conn->ipv6_traffic_ok && exitnode) {
|
if (ap_conn->ipv6_traffic_ok && exitnode) {
|
||||||
|
@ -1328,8 +1328,7 @@ connection_edge_process_relay_cell_not_open(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (((family == AF_INET && ! entry_conn->ipv4_traffic_ok) ||
|
if (((family == AF_INET && ! entry_conn->ipv4_traffic_ok) ||
|
||||||
(family == AF_INET6 && ! entry_conn->ipv6_traffic_ok)) &&
|
(family == AF_INET6 && ! entry_conn->ipv6_traffic_ok))) {
|
||||||
(!entry_conn->is_socks_socket)) {
|
|
||||||
log_fn(LOG_PROTOCOL_WARN, LD_APP,
|
log_fn(LOG_PROTOCOL_WARN, LD_APP,
|
||||||
"Got a connected cell to %s with unsupported address family."
|
"Got a connected cell to %s with unsupported address family."
|
||||||
" Closing.", fmt_addr(&addr));
|
" Closing.", fmt_addr(&addr));
|
||||||
|
Loading…
Reference in New Issue
Block a user