mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
core/or: Allow IPv6 connections to be canonical
Consider IPv6 addresses when checking if a connection is canonical. In 17604, relays assumed that a remote relay could consider an IPv6 connection canonical, but did not set the canonical flag on their side of the connection. Fixes bug 33899; bugfix on 0.3.1.1-alpha.
This commit is contained in:
parent
ab8ff32bec
commit
41fa07f751
5
changes/bug33899
Normal file
5
changes/bug33899
Normal file
@ -0,0 +1,5 @@
|
||||
o Minor bugfixes (IPv6, relay):
|
||||
- Consider IPv6 addresses when checking if a connection is canonical.
|
||||
In 17604, relays assumed that a remote relay could consider an IPv6
|
||||
connection canonical, but did not set the canonical flag on their side
|
||||
of the connection. Fixes bug 33899; bugfix on 0.3.1.1-alpha.
|
@ -901,12 +901,14 @@ connection_or_check_canonicity(or_connection_t *conn, int started_here)
|
||||
}
|
||||
|
||||
if (r) {
|
||||
tor_addr_port_t node_ap;
|
||||
node_get_pref_orport(r, &node_ap);
|
||||
/* XXXX proposal 186 is making this more complex. For now, a conn
|
||||
is canonical when it uses the _preferred_ address. */
|
||||
if (tor_addr_eq(&conn->base_.addr, &node_ap.addr))
|
||||
tor_addr_port_t node_ipv4_ap;
|
||||
tor_addr_port_t node_ipv6_ap;
|
||||
node_get_prim_orport(r, &node_ipv4_ap);
|
||||
node_get_pref_ipv6_orport(r, &node_ipv6_ap);
|
||||
if (tor_addr_eq(&conn->base_.addr, &node_ipv4_ap.addr) ||
|
||||
tor_addr_eq(&conn->base_.addr, &node_ipv6_ap.addr)) {
|
||||
connection_or_set_canonical(conn, 1);
|
||||
}
|
||||
if (!started_here) {
|
||||
/* Override the addr/port, so our log messages will make sense.
|
||||
* This is dangerous, since if we ever try looking up a conn by
|
||||
|
Loading…
Reference in New Issue
Block a user