aboutsummaryrefslogtreecommitdiff
path: root/src/or/connection_edge.c
diff options
context:
space:
mode:
authorRoger Dingledine <arma@torproject.org>2005-02-04 01:49:58 +0000
committerRoger Dingledine <arma@torproject.org>2005-02-04 01:49:58 +0000
commit56d4b99491e9ad290620ae63896a09dc06af49f7 (patch)
tree093b6df0f5f365a0948620b8b3dbb7028d96a9fc /src/or/connection_edge.c
parent1dc170a37d84cbb3efe87365b6e96cd06612902e (diff)
downloadtor-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.c10
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);