mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 22:03:31 +01:00
Do not not cannibalize a circuit that has run out of RELAY_EARLY cells. Partial bug 878 fix.
svn:r17815
This commit is contained in:
parent
145ead96ed
commit
c1c7f982d9
@ -18,6 +18,11 @@ Changes in version 0.2.1.10-alpha - 2009-01-??
|
|||||||
send on that circuit. Otherwise we might violate the proposal-110
|
send on that circuit. Otherwise we might violate the proposal-110
|
||||||
limit. Bugfix on 0.2.1.3-alpha. Partial fix for Bug 878. Diagnosis
|
limit. Bugfix on 0.2.1.3-alpha. Partial fix for Bug 878. Diagnosis
|
||||||
thanks to Karsten.
|
thanks to Karsten.
|
||||||
|
- When we're sending non-EXTEND cells to the first hop in a circuit
|
||||||
|
(for example in order to use an encrypted directory connection), we
|
||||||
|
don't need to use RELAY_EARLY cells: the first hop knows what kind of
|
||||||
|
cell it is, and nobody else can even see the cell type. This makes
|
||||||
|
it easier to cannibalize circuits like this later.
|
||||||
|
|
||||||
o Code simplifications and refactoring:
|
o Code simplifications and refactoring:
|
||||||
- Change our header file guard macros to be less likely to conflict
|
- Change our header file guard macros to be less likely to conflict
|
||||||
|
@ -510,10 +510,13 @@ relay_send_command_from_edge(uint16_t stream_id, circuit_t *circ,
|
|||||||
|
|
||||||
if (cell_direction == CELL_DIRECTION_OUT) {
|
if (cell_direction == CELL_DIRECTION_OUT) {
|
||||||
origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ);
|
origin_circuit_t *origin_circ = TO_ORIGIN_CIRCUIT(circ);
|
||||||
if (origin_circ->remaining_relay_early_cells > 0) {
|
if (origin_circ->remaining_relay_early_cells > 0 &&
|
||||||
/* If we've got any relay_early cells left, use one. Don't worry
|
(relay_command == RELAY_COMMAND_EXTEND ||
|
||||||
* about the conn protocol version: append_cell_to_circuit_queue will
|
cpath_layer != origin_circ->cpath)) {
|
||||||
* fix it up. */
|
/* If we've got any relay_early cells left, and we're sending a relay
|
||||||
|
* cell or we're not talking to the first hop, use one of them. Don't
|
||||||
|
* worry about the conn protocol version: append_cell_to_circuit_queue
|
||||||
|
* will fix it up. */
|
||||||
cell.command = CELL_RELAY_EARLY;
|
cell.command = CELL_RELAY_EARLY;
|
||||||
--origin_circ->remaining_relay_early_cells;
|
--origin_circ->remaining_relay_early_cells;
|
||||||
log_debug(LD_OR, "Sending a RELAY_EARLY cell; %d remaining.",
|
log_debug(LD_OR, "Sending a RELAY_EARLY cell; %d remaining.",
|
||||||
|
Loading…
Reference in New Issue
Block a user