tor

The Tor anonymity network
git clone https://git.dasho.dev/tor.git
Log | Files | Refs | README | LICENSE

commit 695957511b95d5b6cbe4a13d30b591aed572c9e5
parent 50f44afeb4e2222518b64f022ca74f3fa31f8819
Author: David Goulet <dgoulet@torproject.org>
Date:   Tue, 20 Oct 2020 11:10:48 -0400

hs: Always note the virtual port in the ident

Signed-off-by: David Goulet <dgoulet@torproject.org>

Diffstat:
Msrc/feature/hs/hs_common.c | 12+++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/feature/hs/hs_common.c b/src/feature/hs/hs_common.c @@ -887,12 +887,14 @@ hs_set_conn_addr_port(const smartlist_t *ports, edge_connection_t *conn) chosen_port = smartlist_choose(matching_ports); smartlist_free(matching_ports); if (chosen_port) { - if (!(chosen_port->is_unix_addr)) { - /* save the original destination before we overwrite it */ - if (conn->hs_ident) { - conn->hs_ident->orig_virtual_port = TO_CONN(conn)->port; - } + /* Remember, v2 doesn't use an hs_ident. */ + if (conn->hs_ident) { + /* There is always a connection identifier at this point. Regardless of a + * Unix or TCP port, note the virtual port. */ + conn->hs_ident->orig_virtual_port = chosen_port->virtual_port; + } + if (!(chosen_port->is_unix_addr)) { /* Get a non-AF_UNIX connection ready for connection_exit_connect() */ tor_addr_copy(&TO_CONN(conn)->addr, &chosen_port->real_addr); TO_CONN(conn)->port = chosen_port->real_port;