diff --git a/core/tarantool.c b/core/tarantool.c index e887f1809e98678d8069719ce95285f3baf1f280..b10f76a787acc26dbe0e0890e49e97f4f84c28e1 100644 --- a/core/tarantool.c +++ b/core/tarantool.c @@ -244,31 +244,22 @@ static void signal_init(void) { struct sigaction sa; + memset(&sa, 0, sizeof(sa)); sa.sa_handler = SIG_IGN; - sa.sa_flags = 0; sigemptyset(&sa.sa_mask); + if (sigaction(SIGPIPE, &sa, 0) == -1) goto error; sa.sa_handler = sig_int; - sa.sa_flags = 0; - sigemptyset(&sa.sa_mask); - if (sigaction(SIGINT, &sa, 0) == -1) - goto error; - sa.sa_handler = sig_int; - sa.sa_flags = 0; - sigemptyset(&sa.sa_mask); - if (sigaction(SIGTERM, &sa, 0) == -1) + if (sigaction(SIGINT, &sa, 0) == -1 || + sigaction(SIGTERM, &sa, 0) == -1 || + sigaction(SIGHUP, &sa, 0) == -1) + { goto error; - - sa.sa_handler = sig_int; - sa.sa_flags = 0; - sigemptyset(&sa.sa_mask); - if (sigaction(SIGHUP, &sa, 0) == -1) - goto error; - + } return; error: say_syserror("sigaction");