diff options
-rw-r--r-- | src/or/connection.c | 7 | ||||
-rw-r--r-- | src/or/control.c | 2 |
2 files changed, 9 insertions, 0 deletions
diff --git a/src/or/connection.c b/src/or/connection.c index f68fd3362d..ea627620ca 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -276,6 +276,13 @@ connection_free_all(void) connection_t **carray; get_connection_array(&carray,&n); + + /* We don't want to log any messages to controllers. */ + for (i=0;i<n;i++) + if (carray[i]->type == CONN_TYPE_CONTROL) + carray[i]->event_mask = 0; + control_update_global_event_mask(); + for (i=0;i<n;i++) _connection_free(carray[i]); diff --git a/src/or/control.c b/src/or/control.c index ba65c4ebee..d15033acab 100644 --- a/src/or/control.c +++ b/src/or/control.c @@ -523,6 +523,7 @@ send_control0_event(uint16_t event, uint32_t len, const char *body) get_connection_array(&conns, &n_conns); for (i = 0; i < n_conns; ++i) { if (conns[i]->type == CONN_TYPE_CONTROL && + !conns[i]->marked_for_close && conns[i]->state == CONTROL_CONN_STATE_OPEN_V0 && conns[i]->event_mask & (1<<event)) { send_control0_message(conns[i], CONTROL0_CMD_EVENT, buflen, buf); @@ -560,6 +561,7 @@ send_control1_event(uint16_t event, const char *format, ...) get_connection_array(&conns, &n_conns); for (i = 0; i < n_conns; ++i) { if (conns[i]->type == CONN_TYPE_CONTROL && + !conns[i]->marked_for_close && conns[i]->state == CONTROL_CONN_STATE_OPEN_V1 && conns[i]->event_mask & (1<<event)) { connection_write_to_buf(buf, len, conns[i]); |