mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2025-02-24 14:51:11 +01:00
Use LD_PROTOCOL rather than LD_BUG to warn about bogus reason codes that originated remotely in circuit_end_reason_to_control_string()
This commit is contained in:
parent
17442560c4
commit
35f573136d
1 changed files with 18 additions and 2 deletions
|
@ -300,8 +300,13 @@ errno_to_orconn_end_reason(int e)
|
|||
const char *
|
||||
circuit_end_reason_to_control_string(int reason)
|
||||
{
|
||||
if (reason >= 0 && reason & END_CIRC_REASON_FLAG_REMOTE)
|
||||
int is_remote = 0;
|
||||
|
||||
if (reason >= 0 && reason & END_CIRC_REASON_FLAG_REMOTE) {
|
||||
reason &= ~END_CIRC_REASON_FLAG_REMOTE;
|
||||
is_remote = 1;
|
||||
}
|
||||
|
||||
switch (reason) {
|
||||
case END_CIRC_AT_ORIGIN:
|
||||
/* This shouldn't get passed here; it's a catch-all reason. */
|
||||
|
@ -338,7 +343,18 @@ circuit_end_reason_to_control_string(int reason)
|
|||
case END_CIRC_REASON_MEASUREMENT_EXPIRED:
|
||||
return "MEASUREMENT_EXPIRED";
|
||||
default:
|
||||
log_warn(LD_BUG, "Unrecognized reason code %d", (int)reason);
|
||||
if (is_remote) {
|
||||
/*
|
||||
* If it's remote, it's not a bug *here*, so don't use LD_BUG, but
|
||||
* do note that the someone we're talking to is speaking the Tor
|
||||
* protocol with a weird accent.
|
||||
*/
|
||||
log_warn(LD_PROTOCOL,
|
||||
"Remote server sent bogus reason code %d", reason);
|
||||
} else {
|
||||
log_warn(LD_BUG,
|
||||
"Unrecognized reason code %d", reason);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue