diff options
author | teor <teor@torproject.org> | 2019-04-19 11:42:09 +1000 |
---|---|---|
committer | teor <teor@torproject.org> | 2019-04-19 11:42:09 +1000 |
commit | 2460b4461f61c3b0fdeedb5bbfb21847a256a867 (patch) | |
tree | b92992801dac24d3a9fba0bc3934333ec727f106 | |
parent | ec213ae8a09505e97215cf9c54d1003c314c91f9 (diff) | |
parent | add0f89c14b4aab6726e11acdcd864ee0c91543b (diff) | |
download | tor-2460b4461f61c3b0fdeedb5bbfb21847a256a867.tar.gz tor-2460b4461f61c3b0fdeedb5bbfb21847a256a867.zip |
Merge remote-tracking branch 'tor-github/pr/792' into maint-0.2.9
-rw-r--r-- | changes/bug29665 | 7 | ||||
-rw-r--r-- | src/or/circuituse.c | 5 |
2 files changed, 11 insertions, 1 deletions
diff --git a/changes/bug29665 b/changes/bug29665 new file mode 100644 index 0000000000..d89046faf5 --- /dev/null +++ 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/or/circuituse.c b/src/or/circuituse.c index eaf16ecbff..03b54fc3d5 100644 --- a/src/or/circuituse.c +++ b/src/or/circuituse.c @@ -1379,10 +1379,13 @@ 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->is_first_hop && !circ->n_chan && !or_circ->n_streams && !or_circ->resolving_streams && - or_circ->p_chan && + or_circ->p_chan && !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, |