Bläddra i källkod

Merge remote-tracking branch 'tor-github/pr/792' into maint-0.2.9

teor 5 år sedan
förälder
incheckning
2460b4461f
2 ändrade filer med 11 tillägg och 1 borttagningar
  1. 7 0
      changes/bug29665
  2. 4 1
      src/or/circuituse.c

+ 7 - 0
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.

+ 4 - 1
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,