mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
r9017@totoro: nickm | 2006-10-13 01:27:33 -0400
Second patch to work on circuit close reasons from Mike Perry. Disabled partially; see comment. Whitespace cleaned up. svn:r8699
This commit is contained in:
parent
ff487020ab
commit
78043b8478
@ -378,6 +378,19 @@ command_process_destroy_cell(cell_t *cell, or_connection_t *conn)
|
||||
} else { /* the destroy came from ahead */
|
||||
circuit_set_n_circid_orconn(circ, 0, NULL);
|
||||
if (CIRCUIT_IS_ORIGIN(circ)) {
|
||||
/* Prevent arbitrary destroys from going unnoticed by controller */
|
||||
/* XXXX Not quite right; what we want is to tell the controller the
|
||||
* exact reason that we were asked to close, but tell it that we
|
||||
* closed because we were asked. Anything else is not accurate.
|
||||
* OR_CONN_CLOSED is certainly wrong, since a destroy doesn't mean
|
||||
* that the underlying OR connection got closed. -NM */
|
||||
#if 0
|
||||
if (reason == END_CIRC_AT_ORIGIN ||
|
||||
reason == END_CIRC_REASON_NONE ||
|
||||
reason == END_CIRC_REASON_REQUESTED) {
|
||||
reason = END_CIRC_REASON_OR_CONN_CLOSED;
|
||||
}
|
||||
#endif
|
||||
circuit_mark_for_close(circ, reason);
|
||||
} else {
|
||||
char payload[1];
|
||||
|
@ -2370,7 +2370,7 @@ handle_control_closecircuit(control_connection_t *conn, uint32_t len,
|
||||
}
|
||||
|
||||
if (!safe || !circ->p_streams) {
|
||||
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_NONE);
|
||||
circuit_mark_for_close(TO_CIRCUIT(circ), END_CIRC_REASON_REQUESTED);
|
||||
}
|
||||
|
||||
send_control_done(conn);
|
||||
|
@ -158,7 +158,7 @@ circuit_receive_relay_cell(cell_t *cell, circuit_t *circ, int cell_direction)
|
||||
|
||||
if (relay_crypt(circ, cell, cell_direction, &layer_hint, &recognized) < 0) {
|
||||
log_warn(LD_BUG,"relay crypt failed. Dropping connection.");
|
||||
return -1;
|
||||
return -END_CIRC_REASON_INTERNAL;
|
||||
}
|
||||
|
||||
if (recognized) {
|
||||
|
Loading…
Reference in New Issue
Block a user