|
@@ -1570,10 +1570,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,
|