|
@@ -745,6 +745,9 @@ channel_init(channel_t *chan)
|
|
|
|
|
|
|
|
|
channel_timestamp_created(chan);
|
|
|
+
|
|
|
+
|
|
|
+ chan->has_been_open = 0;
|
|
|
}
|
|
|
|
|
|
|
|
@@ -1297,7 +1300,8 @@ channel_closed(channel_t *chan)
|
|
|
|
|
|
|
|
|
* give up. */
|
|
|
- circuit_n_chan_done(chan, 0);
|
|
|
+ if (! chan->has_been_open)
|
|
|
+ circuit_n_chan_done(chan, 0);
|
|
|
|
|
|
|
|
|
circuit_unlink_all_from_channel(chan, END_CIRC_REASON_CHANNEL_CLOSED);
|
|
@@ -1945,6 +1949,7 @@ channel_change_state(channel_t *chan, channel_state_t to_state)
|
|
|
|
|
|
if (to_state == CHANNEL_STATE_OPEN) {
|
|
|
channel_do_open_actions(chan);
|
|
|
+ chan->has_been_open = 1;
|
|
|
|
|
|
|
|
|
if (! TOR_SIMPLEQ_EMPTY(&chan->incoming_queue))
|