From: Andrea Shepard Date: Wed, 16 Apr 2014 03:19:39 +0000 (-0700) Subject: Close orconns correctly through channels when setting DisableNetwork to 1 X-Git-Tag: tor-0.2.5.4-alpha~39^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a5544e589d1724fc2765b277da736bbb2a9a8299;p=thirdparty%2Ftor.git Close orconns correctly through channels when setting DisableNetwork to 1 --- diff --git a/changes/bug11306 b/changes/bug11306 new file mode 100644 index 0000000000..bf8ea40114 --- /dev/null +++ b/changes/bug11306 @@ -0,0 +1,4 @@ + o Bugfixes: + - When closing all connections on setting DisableNetwork to 1, use + connection_or_close_normally() rather than closing orconns out from + under the channel layer. Fixes bug #11306. diff --git a/src/or/connection.c b/src/or/connection.c index 1be4c45dd7..0c61b0d616 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -2359,6 +2359,20 @@ connection_mark_all_noncontrol_connections(void) connection_mark_unattached_ap(TO_ENTRY_CONN(conn), END_STREAM_REASON_HIBERNATING); break; + case CONN_TYPE_OR: + { + or_connection_t *orconn = TO_OR_CONN(conn); + if (orconn->chan) { + connection_or_close_normally(orconn, 0); + } else { + /* + * There should have been one, but mark for close and hope + * for the best.. + */ + connection_mark_for_close(conn); + } + } + break; default: connection_mark_for_close(conn); break;