mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
Merge branch 'bug9880_fix' into maint-0.2.4
This commit is contained in:
commit
0bec65277a
8
changes/bug9880
Normal file
8
changes/bug9880
Normal file
@ -0,0 +1,8 @@
|
||||
o Minor bugfixes:
|
||||
|
||||
- When closing a channel that has already been open, do not close
|
||||
pending circuits that were waiting to connect to the same relay.
|
||||
Fixes bug 9880; bugfix on 0.2.5.1-alpha. Thanks to skruffy for
|
||||
finding this bug. (Bug was merged to 0.2.4 branch but not released
|
||||
in any 0.2.4 version)
|
||||
|
@ -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))
|
||||
|
@ -46,6 +46,9 @@ struct channel_s {
|
||||
/* Should we expect to see this channel in the channel lists? */
|
||||
unsigned char registered:1;
|
||||
|
||||
/** has this channel ever been open? */
|
||||
unsigned int has_been_open:1;
|
||||
|
||||
/** Why did we close?
|
||||
*/
|
||||
enum {
|
||||
|
Loading…
Reference in New Issue
Block a user