From: Roger Dingledine Date: Tue, 20 Jul 2004 19:28:02 +0000 (+0000) Subject: if you're an OR and he's an OR and he's running 0.0.7, X-Git-Tag: tor-0.0.8pre1~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66fc6cf04a006904605ffdeda13140acf237ff8c;p=thirdparty%2Ftor.git if you're an OR and he's an OR and he's running 0.0.7, don't expire your connections to him. svn:r2062 --- diff --git a/src/or/main.c b/src/or/main.c index 04482dbddc..e657310d0c 100644 --- a/src/or/main.c +++ b/src/or/main.c @@ -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 */