aboutsummaryrefslogtreecommitdiff
path: root/src/or/channel.c
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2013-10-02 22:39:27 -0400
committerNick Mathewson <nickm@torproject.org>2013-10-02 22:39:27 -0400
commit0bec65277abed5567458e94c05c2b94f1b84e460 (patch)
tree1d45f04713d62a5ee1c9aae2fb4c8ae1bda0f728 /src/or/channel.c
parent938ee9b24dfda03a68a71d43b88e9fb00a90f9c8 (diff)
parent557f3329575cd6d1a2dd36fa8fb9cf0ac0b3f721 (diff)
downloadtor-0bec65277abed5567458e94c05c2b94f1b84e460.tar.gz
tor-0bec65277abed5567458e94c05c2b94f1b84e460.zip
Merge branch 'bug9880_fix' into maint-0.2.4
Diffstat (limited to 'src/or/channel.c')
-rw-r--r--src/or/channel.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/or/channel.c b/src/or/channel.c
index 1fb39b88ca..1270eace7d 100644
--- a/src/or/channel.c
+++ b/src/or/channel.c
@@ -743,6 +743,9 @@ channel_init(channel_t *chan)
/* Timestamp it */
channel_timestamp_created(chan);
+
+ /* It hasn't been open yet. */
+ chan->has_been_open = 0;
}
/**
@@ -1294,7 +1297,8 @@ channel_closed(channel_t *chan)
/* Inform any pending (not attached) circs that they should
* give up. */
- circuit_n_chan_done(chan, 0);
+ if (! chan->has_been_open)
+ circuit_n_chan_done(chan, 0);
/* Now close all the attached circuits on it. */
circuit_unlink_all_from_channel(chan, END_CIRC_REASON_CHANNEL_CLOSED);
@@ -1935,6 +1939,7 @@ channel_change_state(channel_t *chan, channel_state_t to_state)
/* Tell circuits if we opened and stuff */
if (to_state == CHANNEL_STATE_OPEN) {
channel_do_open_actions(chan);
+ chan->has_been_open = 1;
/* Check for queued cells to process */
if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))