Browse Source

fix bug found by Adam J. Richter: directory clients shouldn't
hang up five minutes after they begin. but directory servers
should still hang up after 5 minutes of failing to deliver
any bytes.


svn:r8271

Roger Dingledine 19 years ago
parent
commit
f75ef94f27
2 changed files with 3 additions and 1 deletions
  1. 1 1
      src/or/main.c
  2. 2 0
      src/or/or.h

+ 1 - 1
src/or/main.c

@@ -597,7 +597,7 @@ run_connection_housekeeping(int i, time_t now)
   }
 
   /* Expire any directory connections that haven't sent anything for 5 min */
-  if (conn->type == CONN_TYPE_DIR &&
+  if (conn->type == CONN_TYPE_DIR && DIR_CONN_IS_SERVER(conn) &&
       conn->timestamp_lastwritten + DIR_CONN_MAX_STALL < now) {
     log_info(LD_DIR,"Expiring wedged directory conn (fd %d, purpose %d)",
              conn->s, conn->purpose);

+ 2 - 0
src/or/or.h

@@ -305,6 +305,8 @@ typedef enum {
 #define DIR_CONN_STATE_SERVER_WRITING 6
 #define _DIR_CONN_STATE_MAX 6
 
+#define DIR_CONN_IS_SERVER(conn) ((conn)->purpose == DIR_PURPOSE_SERVER)
+
 #define _CONTROL_CONN_STATE_MIN 1
 #define CONTROL_CONN_STATE_OPEN_V0 1
 #define CONTROL_CONN_STATE_OPEN_V1 2