diff options
author | Roger Dingledine <arma@torproject.org> | 2005-02-04 01:49:58 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2005-02-04 01:49:58 +0000 |
commit | 56d4b99491e9ad290620ae63896a09dc06af49f7 (patch) | |
tree | 093b6df0f5f365a0948620b8b3dbb7028d96a9fc /src/or/connection_edge.c | |
parent | 1dc170a37d84cbb3efe87365b6e96cd06612902e (diff) | |
download | tor-56d4b99491e9ad290620ae63896a09dc06af49f7.tar tor-56d4b99491e9ad290620ae63896a09dc06af49f7.tar.gz |
forward-port the logic skew and double-free thing
svn:r3549
Diffstat (limited to 'src/or/connection_edge.c')
-rw-r--r-- | src/or/connection_edge.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/src/or/connection_edge.c b/src/or/connection_edge.c index ddb0c484b..17b9cc41d 100644 --- a/src/or/connection_edge.c +++ b/src/or/connection_edge.c @@ -866,12 +866,7 @@ int connection_exit_begin_conn(cell_t *cell, circuit_t *circ) { connection_exit_connect(n_stream); return 0; case -1: /* resolve failed */ - log_fn(LOG_INFO,"Resolve failed (%s).", n_stream->address); - if (!n_stream->marked_for_close) { - connection_edge_end(n_stream, END_STREAM_REASON_RESOLVEFAILED, - n_stream->cpath_layer); - } - connection_free(n_stream); + /* n_stream got freed. don't touch it. */ break; case 0: /* resolve added to pending list */ /* add it into the linked list of resolving_streams on this circuit */ @@ -916,8 +911,7 @@ int connection_exit_begin_resolve(cell_t *cell, circuit_t *circ) { switch (dns_resolve(dummy_conn)) { case 1: /* The result was cached; a resolved cell was sent. */ case -1: - circuit_detach_stream(circuit_get_by_conn(dummy_conn), dummy_conn); - connection_free(dummy_conn); + /* dummy_conn got freed, don't touch it */ return 0; case 0: /* resolve added to pending list */ assert_circuit_ok(circ); |