tor

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

commit af56dece09e116abf671f8723c6d0a503f69167e
parent aee65084b421d0b5ff717cc9e01dd92f4e96be9e
Author: Nick Mathewson <nickm@torproject.org>
Date:   Fri, 15 Mar 2019 08:53:03 -0400

Merge branch 'maint-0.4.0'

Diffstat:
Achanges/bug29665 | 7+++++++
Msrc/core/or/circuituse.c | 4++++
2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/changes/bug29665 b/changes/bug29665 @@ -0,0 +1,7 @@ + o Minor bugfixes (single onion services): + - Allow connections to single onion services to remain idle without + being disconnected. Relays acting as rendezvous points for + single onion services were mistakenly closing idle established + rendezvous circuits after 60 seconds, thinking that they are unused + directory-fetching circuits that had served their purpose. Fixes + bug 29665; bugfix on 0.2.1.26. diff --git a/src/core/or/circuituse.c b/src/core/or/circuituse.c @@ -1576,10 +1576,14 @@ circuit_expire_old_circuits_serverside(time_t now) or_circ = TO_OR_CIRCUIT(circ); /* If the circuit has been idle for too long, and there are no streams * on it, and it ends here, and it used a create_fast, mark it for close. + * + * Also if there is a rend_splice on it, it's a single onion service + * circuit and we should not close it. */ if (or_circ->p_chan && channel_is_client(or_circ->p_chan) && !circ->n_chan && !or_circ->n_streams && !or_circ->resolving_streams && + !or_circ->rend_splice && channel_when_last_xmit(or_circ->p_chan) <= cutoff) { log_info(LD_CIRC, "Closing circ_id %u (empty %d secs ago)", (unsigned)or_circ->p_circ_id,