From: David Goulet Date: Mon, 1 Feb 2021 17:45:32 +0000 (-0500) Subject: relay: Send back CONNECTION_REFUSED on reentry X-Git-Tag: tor-0.4.5.5-rc^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=387d1d8835df1bffa71e5157c41cb856c5f18d7d;p=thirdparty%2Ftor.git relay: Send back CONNECTION_REFUSED on reentry The TORPROTOCOL reason causes the client to close the circuit which is not what we want because other valid streams might be on it. Instead, CONNECTION_REFUSED will leave it open but will not allow more streams to be attached to it. The client then open a new circuit to the destination. Closes #40270 Signed-off-by: David Goulet --- diff --git a/src/core/or/connection_edge.c b/src/core/or/connection_edge.c index da5431c47e..04005b29a6 100644 --- a/src/core/or/connection_edge.c +++ b/src/core/or/connection_edge.c @@ -4293,7 +4293,7 @@ connection_exit_connect(edge_connection_t *edge_conn) nodelist_reentry_probably_contains(&conn->addr, conn->port)) { log_info(LD_EXIT, "%s tried to connect back to a known relay address. " "Closing.", connection_describe(conn)); - connection_edge_end(edge_conn, END_STREAM_REASON_TORPROTOCOL); + connection_edge_end(edge_conn, END_STREAM_REASON_CONNECTREFUSED); circuit_detach_stream(circuit_get_by_edge_conn(edge_conn), edge_conn); connection_free(conn); return;