aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-04-16 23:13:27 -0400
committerNick Mathewson <nickm@torproject.org>2014-04-16 23:13:27 -0400
commit74ddd5f739696749409c933f82cf3a93152da6cc (patch)
tree8d85a2c549485cb47abba78eefe5f35869552d01 /src
parent10174b00e7258cc8184e85c37a2a39b04a0df92e (diff)
parentf36e93206a20b37321b372802032d3dec481856d (diff)
downloadtor-74ddd5f739696749409c933f82cf3a93152da6cc.tar
tor-74ddd5f739696749409c933f82cf3a93152da6cc.tar.gz
Merge remote-tracking branch 'andrea/bug11306'
Diffstat (limited to 'src')
-rw-r--r--src/or/config.c5
-rw-r--r--src/or/connection.c14
2 files changed, 18 insertions, 1 deletions
diff --git a/src/or/config.c b/src/or/config.c
index 23a63ccd2..b5827bee6 100644
--- a/src/or/config.c
+++ b/src/or/config.c
@@ -1179,10 +1179,13 @@ options_act_reversible(const or_options_t *old_options, char **msg)
SMARTLIST_FOREACH(replaced_listeners, connection_t *, conn,
{
+ int marked = conn->marked_for_close;
log_notice(LD_NET, "Closing old %s on %s:%d",
conn_type_to_string(conn->type), conn->address, conn->port);
connection_close_immediate(conn);
- connection_mark_for_close(conn);
+ if (!marked) {
+ connection_mark_for_close(conn);
+ }
});
goto done;
diff --git a/src/or/connection.c b/src/or/connection.c
index 1be4c45dd..0c61b0d61 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;