]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
if you're an OR and he's an OR and he's running 0.0.7,
authorRoger Dingledine <arma@torproject.org>
Tue, 20 Jul 2004 19:28:02 +0000 (19:28 +0000)
committerRoger Dingledine <arma@torproject.org>
Tue, 20 Jul 2004 19:28:02 +0000 (19:28 +0000)
don't expire your connections to him.

svn:r2062

src/or/main.c

index 04482dbddc7dc9a3bf84065eb7c3449ab5824ee6..e657310d0ced324ac7d4827b655360d283636610 100644 (file)
@@ -370,10 +370,14 @@ static void run_connection_housekeeping(int i, time_t now) {
      the connection or send a keepalive, depending. */
   if(connection_speaks_cells(conn) &&
      now >= conn->timestamp_lastwritten + options.KeepalivePeriod) {
-    if((!clique_mode() && !circuit_get_by_conn(conn)) ||
-       (!connection_state_is_open(conn))) {
-      /* we're an onion proxy, with no circuits;
-       * or our handshake has expired. kill it. */
+    routerinfo_t *router = router_get_by_digest(conn->identity_digest);
+    if((!connection_state_is_open(conn)) ||
+       (!clique_mode() && !circuit_get_by_conn(conn) &&
+       (!router || !server_mode() || strncmp(router->platform, "Tor 0.0.7", 9)))) {
+      /* our handshake has expired;
+       * or we're not an authdirserver, we have no circuits, and
+       *   either he's an OP, we're an OP, or we're both ORs and he's running 0.0.8,
+       * then kill it. */
       log_fn(LOG_INFO,"Expiring connection to %d (%s:%d).",
              i,conn->address, conn->port);
       /* flush anything waiting, e.g. a destroy for a just-expired circ */