diff --git a/src/or/connection.c b/src/or/connection.c index 243fd60a58..8b86d253b3 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -635,8 +635,9 @@ int connection_consider_sending_sendme(connection_t *conn) { circ = circuit_get_by_conn(conn); if(!circ) { - log(LOG_DEBUG,"connection_consider_sending_sendme(): Bug: no circuit associated with conn. Closing."); - return -1; + /* this can legitimately happen if the destroy has already arrived and torn down the circuit */ + log(LOG_DEBUG,"connection_consider_sending_sendme(): No circuit associated with conn. Skipping."); + return 0; } sendme.command = CELL_SENDME; sendme.length = RECEIVE_WINDOW_INCREMENT; diff --git a/src/or/connection_ap.c b/src/or/connection_ap.c index 9d96ae85b3..3080fe8226 100644 --- a/src/or/connection_ap.c +++ b/src/or/connection_ap.c @@ -365,8 +365,7 @@ int connection_ap_finished_flushing(connection_t *conn) { case AP_CONN_STATE_OPEN: /* FIXME down the road, we'll clear out circuits that are pending to close */ connection_stop_writing(conn); - connection_consider_sending_sendme(conn); - return 0; + return connection_consider_sending_sendme(conn); default: log(LOG_DEBUG,"Bug: connection_ap_finished_flushing() called in unexpected state."); return 0;