mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-27 13:53:31 +01:00
r9386@Kushana: nickm | 2006-10-25 17:35:38 -0400
Resolve bug 347: translate v0 controller signal numbers into internal signal numbers; leave v1 signal numbers alone. svn:r8828
This commit is contained in:
parent
c928b85cfa
commit
5c670a186c
@ -64,6 +64,8 @@ Changes in version 0.1.2.3-alpha - 2006-10-??
|
||||
requests will now get an error rather than timing out.
|
||||
- Resolve two memory leaks when rebuilding the on-disk router cache
|
||||
(reported by fookoowa).
|
||||
- Controller signals now work on non-Unix platforms that don't define
|
||||
SIGUSR1 and SIGUSR2 the way we expect.
|
||||
|
||||
|
||||
Changes in version 0.1.2.2-alpha - 2006-10-07
|
||||
|
@ -1252,6 +1252,18 @@ handle_control_signal(control_connection_t *conn, uint32_t len,
|
||||
return 0;
|
||||
} else {
|
||||
sig = (uint8_t)body[0];
|
||||
switch (sig)
|
||||
{
|
||||
case 1: sig = SIGHUP; break;
|
||||
case 2: sig = SIGINT; break;
|
||||
case 10: sig = SIGUSR1; break;
|
||||
case 12: sig = SIGUSR2; break;
|
||||
case 15: sig = SIGTERM; break;
|
||||
case SIGNEWNYM: break;
|
||||
default:
|
||||
send_control0_error(conn, ERR_SYNTAX, "Unrecognized signal number.");
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int n = 0;
|
||||
@ -1281,17 +1293,9 @@ handle_control_signal(control_connection_t *conn, uint32_t len,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!control_signal_check(sig)) {
|
||||
if (STATE_IS_V0(conn->_base.state))
|
||||
send_control0_error(conn, ERR_SYNTAX, "Unrecognized signal number.");
|
||||
else
|
||||
connection_write_str_to_buf("551 Unable to act on signal\r\n",
|
||||
conn);
|
||||
} else {
|
||||
/* Send DONE first, in case the signal makes us shut down. */
|
||||
send_control_done(conn);
|
||||
control_signal_act(sig);
|
||||
}
|
||||
/* Send DONE first, in case the signal makes us shut down. */
|
||||
send_control_done(conn);
|
||||
control_signal_act(sig);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1229,24 +1229,6 @@ do_main_loop(void)
|
||||
}
|
||||
}
|
||||
|
||||
/* DOCDOC */
|
||||
int
|
||||
control_signal_check(int the_signal)
|
||||
{
|
||||
switch (the_signal)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 10:
|
||||
case 12:
|
||||
case 15:
|
||||
case SIGNEWNYM:
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
/** Used to implement the SIGNAL control command: if we accept
|
||||
* <b>the_signal</b> as a remote pseudo-signal, act on it. */
|
||||
/* We don't re-use catch() here because:
|
||||
|
@ -2273,7 +2273,6 @@ void connection_start_writing(connection_t *conn);
|
||||
void directory_all_unreachable(time_t now);
|
||||
void directory_info_has_arrived(time_t now, int from_cache);
|
||||
|
||||
int control_signal_check(int the_signal);
|
||||
void control_signal_act(int the_signal);
|
||||
void handle_signals(int is_parent);
|
||||
void tor_cleanup(void);
|
||||
|
Loading…
Reference in New Issue
Block a user