mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 23:53:32 +01:00
Split out owning-controller-loss shutdown code into a function
This commit is contained in:
parent
76093af02d
commit
7b34e3a965
@ -2759,6 +2759,29 @@ connection_control_reached_eof(control_connection_t *conn)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Shut down this Tor instance in the same way that SIGINT would, but
|
||||||
|
* with a log message appropriate for the loss of an owning controller. */
|
||||||
|
static void
|
||||||
|
lost_owning_controller(const char *owner_type, const char *loss_manner)
|
||||||
|
{
|
||||||
|
int shutdown_slowly = server_mode(get_options());
|
||||||
|
|
||||||
|
log_notice(LD_CONTROL, "Owning controller %s has %s -- %s.",
|
||||||
|
owner_type, loss_manner,
|
||||||
|
shutdown_slowly ? "shutting down" : "exiting now");
|
||||||
|
|
||||||
|
/* XXXX Perhaps this chunk of code should be a separate function,
|
||||||
|
* called here and by process_signal(SIGINT). */
|
||||||
|
|
||||||
|
if (!shutdown_slowly) {
|
||||||
|
tor_cleanup();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
/* XXXX This will close all listening sockets except control-port
|
||||||
|
* listeners. Perhaps we should close those too. */
|
||||||
|
hibernate_begin_shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
/** Called when <b>conn</b> is being freed. */
|
/** Called when <b>conn</b> is being freed. */
|
||||||
void
|
void
|
||||||
connection_control_closed(control_connection_t *conn)
|
connection_control_closed(control_connection_t *conn)
|
||||||
@ -2769,22 +2792,7 @@ connection_control_closed(control_connection_t *conn)
|
|||||||
control_update_global_event_mask();
|
control_update_global_event_mask();
|
||||||
|
|
||||||
if (conn->is_owning_control_connection) {
|
if (conn->is_owning_control_connection) {
|
||||||
int shutdown_slowly = server_mode(get_options());
|
lost_owning_controller("connection", "closed");
|
||||||
|
|
||||||
log_notice(LD_CONTROL, "Owning controller connection has closed -- %s.",
|
|
||||||
shutdown_slowly ? "shutting down" : "exiting now");
|
|
||||||
|
|
||||||
/* XXXX This chunk of code should be a separate function, called
|
|
||||||
* here, in owning_controller_procmon_cb, and by
|
|
||||||
* process_signal(SIGINT). */
|
|
||||||
|
|
||||||
if (!shutdown_slowly) {
|
|
||||||
tor_cleanup();
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
/* XXXX This will close all listening sockets except control-port
|
|
||||||
* listeners. Perhaps we should close those too. */
|
|
||||||
hibernate_begin_shutdown();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3849,24 +3857,9 @@ static tor_process_monitor_t *owning_controller_process_monitor = NULL;
|
|||||||
static void
|
static void
|
||||||
owning_controller_procmon_cb(void *unused)
|
owning_controller_procmon_cb(void *unused)
|
||||||
{
|
{
|
||||||
int shutdown_slowly = server_mode(get_options());
|
|
||||||
|
|
||||||
(void)unused;
|
(void)unused;
|
||||||
|
|
||||||
log_notice(LD_CONTROL, "Owning controller process has vanished -- "
|
lost_owning_controller("process", "vanished");
|
||||||
"%s.",
|
|
||||||
shutdown_slowly ? "shutting down" : "exiting now");
|
|
||||||
|
|
||||||
/* XXXX This chunk of code should be a separate function, called
|
|
||||||
* here, in connection_control_closed, and by process_signal(SIGINT). */
|
|
||||||
|
|
||||||
if (!shutdown_slowly) {
|
|
||||||
tor_cleanup();
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
/* XXXX This will close all listening sockets except control-port
|
|
||||||
* listeners. Perhaps we should close those too. */
|
|
||||||
hibernate_begin_shutdown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set <b>process_spec</b> as Tor's owning controller process.
|
/** Set <b>process_spec</b> as Tor's owning controller process.
|
||||||
|
Loading…
Reference in New Issue
Block a user