diff --git a/src/server/server.c b/src/server/server.c index e3957f0..21a5b4e 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -180,8 +180,12 @@ int main(int argc, char* argv[]) { log_message(LOG_LEVEL_WARNING, "--ca has no effect without --tls"); } - signal(SIGINT, cleanup); - signal(SIGTERM, cleanup); + struct sigaction sa; + sigemptyset(&sa.sa_mask); + sa.sa_handler = cleanup; + sa.sa_flags = 0; /* Do NOT set SA_RESTART — we need accept() to return EINTR */ + sigaction(SIGINT, &sa, NULL); + sigaction(SIGTERM, &sa, NULL); g_server = server_create(port); if (g_server == NULL) { log_message(LOG_LEVEL_ERROR, "Failed to create server");