summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Ransom <rransom.8774@gmail.com>2011-05-19 16:27:51 -0700
committerRobert Ransom <rransom.8774@gmail.com>2011-05-20 08:25:42 -0700
commit338a0266101e3addecbaf5771f62a860244896b3 (patch)
tree36fd21a91c9fe1dced1dd9b3c5d0b82b2e7a3b17
parent86aeb152cab3d0c9d5d8b301e5eb5e3afe497ea9 (diff)
downloadtor-338a0266101e3addecbaf5771f62a860244896b3.tar.gz
tor-338a0266101e3addecbaf5771f62a860244896b3.zip
Split control connection cleanup out of connection_free
-rw-r--r--src/or/connection.c3
-rw-r--r--src/or/control.c10
-rw-r--r--src/or/control.h2
3 files changed, 13 insertions, 2 deletions
diff --git a/src/or/connection.c b/src/or/connection.c
index fc2097f9a9..24ab593fef 100644
--- a/src/or/connection.c
+++ b/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);
diff --git a/src/or/control.c b/src/or/control.c
index 47e7081825..0ddbee99c1 100644
--- a/src/or/control.c
+++ b/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
diff --git a/src/or/control.h b/src/or/control.h
index a83e3747e6..6694c96438 100644
--- a/src/or/control.h
+++ b/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