diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | src/or/relay.c | 6 |
2 files changed, 9 insertions, 0 deletions
@@ -11,6 +11,9 @@ Changes in version 0.2.0.22-rc - 2008-03-17 - Do not enter a CPU-eating loop when a connection is closed in the middle of client-side TLS renegotiation. Fixes bug 622. Bug diagnosed by lodger. + - Fix assertion failure that could occur when a blocked circuit became + unblocked, and it had pending client DNS requests. Bugfix on + 0.2.0.1-alpha. Fixes bug 632. o Minor bugfixes (on 0.1.2.x): - Generate "STATUS_SERVER" events rather than misspelled diff --git a/src/or/relay.c b/src/or/relay.c index 4bbb0b5b71..91f7f167b6 100644 --- a/src/or/relay.c +++ b/src/or/relay.c @@ -1811,6 +1811,12 @@ set_streams_blocked_on_circ(circuit_t *circ, or_connection_t *orconn, connection_t *conn = TO_CONN(edge); conn->edge_blocked_on_circ = block; + if (!conn->read_event) { + /* This connection is a placeholder for something; probably a DNS + * request. It can't actually stop or start reading.*/ + continue; + } + if (block) { if (connection_is_reading(conn)) connection_stop_reading(conn); |