Bläddra i källkod

Merge remote branch 'origin/maint-0.2.1'

Nick Mathewson 15 år sedan
förälder
incheckning
669fd05ed8
2 ändrade filer med 14 tillägg och 6 borttagningar
  1. 7 0
      changes/bug1840
  2. 7 6
      src/or/main.c

+ 7 - 0
changes/bug1840

@@ -0,0 +1,7 @@
+  o Minor bugfixes:
+    - Allow handshaking OR connections to take a full KeepalivePeriod
+      seconds to handshake.  Previously, we would close them after
+      IDLE_OR_CONN_TIMEOUT seconds, as if they were open.  This is a
+      bugfix on 0.2.1.26.  Thanks to mingw-san for analysis help.  Fixes
+      bug 1840.
+

+ 7 - 6
src/or/main.c

@@ -791,12 +791,13 @@ run_connection_housekeeping(int i, time_t now)
                                    "Tor gave up on the connection");
     connection_mark_for_close(conn);
     conn->hold_open_until_flushed = 1;
-  } else if (past_keepalive && !connection_state_is_open(conn)) {
-    /* We never managed to actually get this connection open and happy. */
-    log_info(LD_OR,"Expiring non-open OR connection to fd %d (%s:%d).",
-             conn->s,conn->address, conn->port);
-    connection_mark_for_close(conn);
-    conn->hold_open_until_flushed = 1;
+  } else if (!connection_state_is_open(conn)) {
+    if (past_keepalive) {
+      /* We never managed to actually get this connection open and happy. */
+      log_info(LD_OR,"Expiring non-open OR connection to fd %d (%s:%d).",
+               conn->s,conn->address, conn->port);
+      connection_mark_for_close(conn);
+    }
   } else if (we_are_hibernating() && !or_conn->n_circuits &&
              !buf_datalen(conn->outbuf)) {
     /* We're hibernating, there's no circuits, and nothing to flush.*/