mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-20 10:12:15 +01:00
Merge commit 'mikeperry/bug1739' into maint-0.2.2
This commit is contained in:
commit
48cd096276
4
changes/bug1739
Normal file
4
changes/bug1739
Normal file
@ -0,0 +1,4 @@
|
||||
o Minor bugfixes:
|
||||
- Fix to resume generating CIRC FAILED REASON=TIMEOUT control port
|
||||
messages, which were disabled by the circuit build timeout changes
|
||||
in 0.2.2.14-alpha. Bugfix on 0.2.2.14-alpha; fixes bug #1739.
|
@ -1005,7 +1005,8 @@
|
||||
Reason = "NONE" / "TORPROTOCOL" / "INTERNAL" / "REQUESTED" /
|
||||
"HIBERNATING" / "RESOURCELIMIT" / "CONNECTFAILED" /
|
||||
"OR_IDENTITY" / "OR_CONN_CLOSED" / "TIMEOUT" /
|
||||
"FINISHED" / "DESTROYED" / "NOPATH" / "NOSUCHSERVICE"
|
||||
"FINISHED" / "DESTROYED" / "NOPATH" / "NOSUCHSERVICE" /
|
||||
"MEASUREMENT_EXPIRED"
|
||||
|
||||
The path is provided only when the circuit has been extended at least one
|
||||
hop.
|
||||
|
@ -368,7 +368,7 @@ circuit_purpose_to_controller_string(uint8_t purpose)
|
||||
case CIRCUIT_PURPOSE_TESTING:
|
||||
return "TESTING";
|
||||
case CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT:
|
||||
return "EXPIRED";
|
||||
return "MEASURE_TIMEOUT";
|
||||
case CIRCUIT_PURPOSE_CONTROLLER:
|
||||
return "CONTROLLER";
|
||||
|
||||
|
@ -389,6 +389,9 @@ circuit_expire_building(time_t now)
|
||||
/* Circuits are allowed to last longer for measurement.
|
||||
* Switch their purpose and wait. */
|
||||
if (victim->purpose != CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT) {
|
||||
control_event_circuit_status(TO_ORIGIN_CIRCUIT(victim),
|
||||
CIRC_EVENT_FAILED,
|
||||
END_CIRC_REASON_TIMEOUT);
|
||||
victim->purpose = CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT;
|
||||
/* Record this failure to check for too many timeouts
|
||||
* in a row. This function does not record a time value yet
|
||||
@ -430,7 +433,10 @@ circuit_expire_building(time_t now)
|
||||
circuit_state_to_string(victim->state), victim->purpose);
|
||||
|
||||
circuit_log_path(LOG_INFO,LD_CIRC,TO_ORIGIN_CIRCUIT(victim));
|
||||
circuit_mark_for_close(victim, END_CIRC_REASON_TIMEOUT);
|
||||
if (victim->purpose == CIRCUIT_PURPOSE_C_MEASURE_TIMEOUT)
|
||||
circuit_mark_for_close(victim, END_CIRC_REASON_MEASUREMENT_EXPIRED);
|
||||
else
|
||||
circuit_mark_for_close(victim, END_CIRC_REASON_TIMEOUT);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -614,6 +614,10 @@ typedef enum {
|
||||
|
||||
/* Negative reasons are internal: we never send them in a DESTROY or TRUNCATE
|
||||
* call; they only go to the controller for tracking */
|
||||
/** Our post-timeout circuit time measurement period expired.
|
||||
* We must give up now */
|
||||
#define END_CIRC_REASON_MEASUREMENT_EXPIRED -3
|
||||
|
||||
/** We couldn't build a path for this circuit. */
|
||||
#define END_CIRC_REASON_NOPATH -2
|
||||
/** Catch-all "other" reason for closing origin circuits. */
|
||||
|
@ -334,6 +334,8 @@ circuit_end_reason_to_control_string(int reason)
|
||||
return "NOPATH";
|
||||
case END_CIRC_REASON_NOSUCHSERVICE:
|
||||
return "NOSUCHSERVICE";
|
||||
case END_CIRC_REASON_MEASUREMENT_EXPIRED:
|
||||
return "MEASUREMENT_EXPIRED";
|
||||
default:
|
||||
log_warn(LD_BUG, "Unrecognized reason code %d", (int)reason);
|
||||
return NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user