Call channel_run_cleanup() in main.c, and include a comment explaining how closing or_connections related to channels

This commit is contained in:
Andrea Shepard 2012-09-08 18:58:03 -07:00 committed by Andrea Shepard
parent f06880c855
commit 07f9e8fc7d

View File

@ -400,6 +400,18 @@ connection_unlink(connection_t *conn)
if (conn->type == CONN_TYPE_OR) {
if (!tor_digest_is_zero(TO_OR_CONN(conn)->identity_digest))
connection_or_remove_from_identity_map(TO_OR_CONN(conn));
/* connection_unlink() can only get called if the connection
* was already on the closeable list, and it got there by
* connection_mark_for_close(), which was called from
* connection_or_close_normally() or
* connection_or_close_for_error(), so the channel should
* already be in CHANNEL_STATE_CLOSING, and then the
* connection_about_to_close_connection() goes to
* connection_or_about_to_close(), which calls channel_closed()
* to notify the channel_t layer, and closed the channel, so
* nothing more to do here to deal with the channel associated
* with an orconn.
*/
}
connection_free(conn);
}
@ -1525,6 +1537,9 @@ run_scheduled_events(time_t now)
* flush it. */
or_state_save(now);
/** 8c. Do channel cleanup just like for connections */
channel_run_cleanup();
/** 9. and if we're a server, check whether our DNS is telling stories to
* us. */
if (!net_is_disabled() &&