]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Call channel_run_cleanup() in main.c, and include a comment explaining how closing...
authorAndrea Shepard <andrea@persephoneslair.org>
Sun, 9 Sep 2012 01:58:03 +0000 (18:58 -0700)
committerAndrea Shepard <andrea@torproject.org>
Mon, 8 Oct 2012 10:06:09 +0000 (03:06 -0700)
src/or/main.c

index f53bcf357435f62f26d2691fe5710b0ba8a2fc0f..491c48ea7c29d0cf6b1d3e87d9c394de5e938b95 100644 (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() &&