mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
Merge remote-tracking branch 'tor-gitlab/mr/339'
This commit is contained in:
commit
37b16d7e19
5
changes/ticket40271
Normal file
5
changes/ticket40271
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
o Minor features (client):
|
||||||
|
- Clients now check whether their streams are attempting to re-enter
|
||||||
|
the Tor network (i.e. to send Tor traffic over Tor), and they close
|
||||||
|
them preemptively if they think exit relays will refuse them. See
|
||||||
|
ticket 2667 for details. Close ticket 40271.
|
@ -163,6 +163,7 @@ static int connection_ap_process_natd(entry_connection_t *conn);
|
|||||||
static int connection_exit_connect_dir(edge_connection_t *exitconn);
|
static int connection_exit_connect_dir(edge_connection_t *exitconn);
|
||||||
static int consider_plaintext_ports(entry_connection_t *conn, uint16_t port);
|
static int consider_plaintext_ports(entry_connection_t *conn, uint16_t port);
|
||||||
static int connection_ap_supports_optimistic_data(const entry_connection_t *);
|
static int connection_ap_supports_optimistic_data(const entry_connection_t *);
|
||||||
|
static bool network_reentry_is_allowed(void);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cast a `connection_t *` to an `edge_connection_t *`.
|
* Cast a `connection_t *` to an `edge_connection_t *`.
|
||||||
@ -2401,6 +2402,25 @@ connection_ap_handshake_rewrite_and_attach(entry_connection_t *conn,
|
|||||||
* address. */
|
* address. */
|
||||||
conn->entry_cfg.ipv6_traffic = 0;
|
conn->entry_cfg.ipv6_traffic = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Next, yet another check: we know it's a direct IP address. Is it
|
||||||
|
* the IP address of a known relay and its ORPort, or of a directory
|
||||||
|
* authority and its OR or Dir Port? If so, and if a consensus param
|
||||||
|
* says to, then exit relays will refuse this request (see ticket
|
||||||
|
* 2667 for details). Let's just refuse it locally right now, to
|
||||||
|
* save time and network load but also to give the user a more
|
||||||
|
* useful log message. */
|
||||||
|
if (!network_reentry_is_allowed() &&
|
||||||
|
nodelist_reentry_contains(&addr, socks->port)) {
|
||||||
|
log_warn(LD_APP, "Not attempting connection to %s:%d because "
|
||||||
|
"the network would reject it. Are you trying to send "
|
||||||
|
"Tor traffic over Tor? This traffic can be harmful to "
|
||||||
|
"the Tor network. If you really need it, try using "
|
||||||
|
"a bridge as a workaround.",
|
||||||
|
safe_str_client(socks->address), socks->port);
|
||||||
|
connection_mark_unattached_ap(conn, END_STREAM_REASON_TORPROTOCOL);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user