mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 18:22:09 +01:00
Merge branch 'bug7267' of ssh://git-rw.torproject.org/user/andrea/tor
This commit is contained in:
commit
2cb82c33bc
4
changes/bug7267
Normal file
4
changes/bug7267
Normal file
@ -0,0 +1,4 @@
|
||||
- Major bugfixes
|
||||
o Call channel_mark_for_close() rather than connection_mark_for_close()
|
||||
in hibernate_go_dormant() when closing an or_connection_t. Fixes bug
|
||||
7267.
|
@ -1057,6 +1057,19 @@ channel_set_cell_handlers(channel_t *chan,
|
||||
chan->var_cell_handler)) channel_process_cells(chan);
|
||||
}
|
||||
|
||||
/*
|
||||
* On closing channels
|
||||
*
|
||||
* There are three functions that close channels, for use in
|
||||
* different circumstances:
|
||||
*
|
||||
* - Use channel_mark_for_close() for most cases
|
||||
* - Use channel_close_from_lower_layer() if you are connection_or.c
|
||||
* and the other end closes the underlying connection.
|
||||
* - Use channel_close_for_error() if you are connection_or.c and
|
||||
* some sort of error has occurred.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Mark a channel for closure
|
||||
*
|
||||
|
@ -23,6 +23,8 @@ hibernating, phase 2:
|
||||
|
||||
#define HIBERNATE_PRIVATE
|
||||
#include "or.h"
|
||||
#include "channel.h"
|
||||
#include "channeltls.h"
|
||||
#include "config.h"
|
||||
#include "connection.h"
|
||||
#include "connection_edge.h"
|
||||
@ -846,7 +848,13 @@ hibernate_go_dormant(time_t now)
|
||||
if (conn->type == CONN_TYPE_AP) /* send socks failure if needed */
|
||||
connection_mark_unattached_ap(TO_ENTRY_CONN(conn),
|
||||
END_STREAM_REASON_HIBERNATING);
|
||||
else
|
||||
else if (conn->type == CONN_TYPE_OR) {
|
||||
if (TO_OR_CONN(conn)->chan) {
|
||||
channel_mark_for_close(TLS_CHAN_TO_BASE(TO_OR_CONN(conn)->chan));
|
||||
} else {
|
||||
connection_mark_for_close(conn);
|
||||
}
|
||||
} else
|
||||
connection_mark_for_close(conn);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user