diff --git a/src/tarantool.cc b/src/tarantool.cc index 24329a30e57ab25031c12fa81478c87e14c37285..f24100800e6ba5b2b0caeb789357608f9b625472 100644 --- a/src/tarantool.cc +++ b/src/tarantool.cc @@ -81,7 +81,9 @@ char **main_argv; int main_argc; static void *main_opt = NULL; struct tarantool_cfg cfg; -static ev_signal sigs[4]; +/** Signals handled after start as part of the event loop. */ +static ev_signal ev_sigs[4]; +static const int ev_sig_count = sizeof(ev_sigs)/sizeof(*ev_sigs); int snapshot_pid = 0; /* snapshot processes pid */ uint32_t snapshot_version = 0; @@ -445,19 +447,16 @@ sig_fatal_cb(int signo) static void signal_free(void) { - if (sigs == NULL) - return; - int i; - for (i = 0 ; i < 4 ; i++) - ev_signal_stop(&sigs[i]); + for (i = 0; i < ev_sig_count; i++) + ev_signal_stop(&ev_sigs[i]); } static void signal_start(void) { - for (int i = 0 ; i < 4 ; i++) - ev_signal_start(&sigs[i]); + for (int i = 0; i < ev_sig_count; i++) + ev_signal_start(&ev_sigs[i]); } /** Make sure the child has a default signal disposition. */ @@ -512,10 +511,10 @@ signal_init(void) exit(EX_OSERR); } - ev_signal_init(&sigs[0], sig_snapshot, SIGUSR1); - ev_signal_init(&sigs[1], signal_cb, SIGINT); - ev_signal_init(&sigs[2], signal_cb, SIGTERM); - ev_signal_init(&sigs[3], signal_cb, SIGHUP); + ev_signal_init(&ev_sigs[0], sig_snapshot, SIGUSR1); + ev_signal_init(&ev_sigs[1], signal_cb, SIGINT); + ev_signal_init(&ev_sigs[2], signal_cb, SIGTERM); + ev_signal_init(&ev_sigs[3], signal_cb, SIGHUP); (void) tt_pthread_atfork(NULL, NULL, signal_reset); }