Browse Source

Split control connection cleanup out of connection_free

Robert Ransom 13 years ago
parent
commit
338a026610
3 changed files with 13 additions and 2 deletions
  1. 1 2
      src/or/connection.c
  2. 10 0
      src/or/control.c
  3. 2 0
      src/or/control.h

+ 1 - 2
src/or/connection.c

@@ -479,8 +479,7 @@ connection_free(connection_t *conn)
     }
   }
   if (conn->type == CONN_TYPE_CONTROL) {
-    TO_CONTROL_CONN(conn)->event_mask = 0;
-    control_update_global_event_mask();
+    connection_control_closed(TO_CONTROL_CONN(conn));
   }
   connection_unregister_events(conn);
   _connection_free(conn);

+ 10 - 0
src/or/control.c

@@ -2739,6 +2739,16 @@ connection_control_reached_eof(control_connection_t *conn)
   return 0;
 }
 
+/** Called when <b>conn</b> is being freed. */
+void
+connection_control_closed(control_connection_t *conn)
+{
+  tor_assert(conn);
+
+  conn->event_mask = 0;
+  control_update_global_event_mask();
+}
+
 /** Return true iff <b>cmd</b> is allowable (or at least forgivable) at this
  * stage of the protocol. */
 static int

+ 2 - 0
src/or/control.h

@@ -25,6 +25,8 @@ void control_adjust_event_log_severity(void);
 
 int connection_control_finished_flushing(control_connection_t *conn);
 int connection_control_reached_eof(control_connection_t *conn);
+void connection_control_closed(control_connection_t *conn);
+
 int connection_control_process_inbuf(control_connection_t *conn);
 
 #define EVENT_AUTHDIR_NEWDESCS 0x000D