Commit c9dd2d1a authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Merge remote-tracking branch 'public/bug14129_024' into maint-0.2.5

parents b08cfc65 90528741
Loading
Loading
Loading
Loading

changes/bug14129

0 → 100644
+7 −0
Original line number Diff line number Diff line
  o Major bugfixes (exit node stability):

    - Fix an assertion failure that could occur under high DNS load.  Fixes
      bug 14129; bugfix on Tor 0.0.7rc1. Found by "jowr"; diagnosed and fixed
      by "cypherpunks".

+5 −1
Original line number Diff line number Diff line
@@ -558,6 +558,8 @@ purge_expired_resolves(time_t now)
        /* Connections should only be pending if they have no socket. */
        tor_assert(!SOCKET_OK(pend->conn->base_.s));
        pendconn = pend->conn;
        /* Prevent double-remove */
        pendconn->base_.state = EXIT_CONN_STATE_RESOLVEFAILED;
        if (!pendconn->base_.marked_for_close) {
          connection_edge_end(pendconn, END_STREAM_REASON_TIMEOUT);
          circuit_detach_stream(circuit_get_by_edge_conn(pendconn), pendconn);
@@ -1133,7 +1135,9 @@ connection_dns_remove(edge_connection_t *conn)
        return; /* more are pending */
      }
    }
    tor_assert(0); /* not reachable unless onlyconn not in pending list */
    log_warn(LD_BUG, "Connection (fd "TOR_SOCKET_T_FORMAT") was not waiting "
             "for a resolve of %s, but we tried to remove it.",
             conn->base_.s, escaped_safe_str(conn->base_.address));
  }
}