Browse Source

Check ewma_enabled before doing circ-has-become-inactive check

This avoids a possible crash bug in flush_from_first_active_circuit.

Fixes bug 6341; bugfix on 0.2.2.7-alpha.

Bug reported and fixed by a pseudonymous user on IRC.
Nick Mathewson 12 years ago
parent
commit
5ade278605
2 changed files with 6 additions and 1 deletions
  1. 5 0
      changes/bug6341
  2. 1 1
      src/or/relay.c

+ 5 - 0
changes/bug6341

@@ -0,0 +1,5 @@
+  o Major bugfixes:
+    - Fix a possible crash bug when checking for deactivated circuits
+      in connection_or_flush_from_first_active_circuit(). Fixes bug 
+      6341; bugfix on 0.2.2.7-alpha. Bug report and fix received
+      pseudonymously.

+ 1 - 1
src/or/relay.c

@@ -2464,7 +2464,7 @@ connection_or_flush_from_first_active_circuit(or_connection_t *conn, int max,
       tor_assert(tmp == cell_ewma);
       add_cell_ewma_to_conn(conn, cell_ewma);
     }
-    if (circ != conn->active_circuits) {
+    if (!ewma_enabled && circ != conn->active_circuits) {
       /* If this happens, the current circuit just got made inactive by
        * a call in connection_write_to_buf().  That's nothing to worry about:
        * circuit_make_inactive_on_conn() already advanced conn->active_circuits