mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
relays shouldn't close idle rend circuits
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.
This commit is contained in:
parent
155b0f5521
commit
a3bc950e42
2 changed files with 11 additions and 0 deletions
7
changes/bug29665
Normal file
7
changes/bug29665
Normal file
|
@ -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.
|
|
@ -1560,10 +1560,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,
|
||||
|
|
Loading…
Add table
Reference in a new issue