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");