From 8859bfd23846fea3d32fe8b522885a56ce3f9260 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Fri, 5 Jun 2009 11:15:49 +0000 Subject: [PATCH] Replaced signal() calls by sigaction() calls to avoid Solaris problems, thanks to Paul T. Keener SVN revision: 2207 --- src/elogd.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index 56f4087d..dc201d40 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -27670,6 +27670,13 @@ void server_loop(void) SSL_CTX *ssl_ctx; #endif +#ifdef OS_UNIX + /* sigaction structs */ + struct sigaction ctrlc_handle; + struct sigaction ignore_handle; + struct sigaction hup_handle; +#endif + i_conn = content_length = 0; net_buffer_size = 100000; net_buffer = xmalloc(net_buffer_size); @@ -27825,11 +27832,22 @@ void server_loop(void) close(fd); } - /* install signal handler */ - signal(SIGTERM, ctrlc_handler); - signal(SIGINT, ctrlc_handler); - signal(SIGPIPE, SIG_IGN); - signal(SIGHUP, hup_handler); + /* install signal handlers */ + ctrlc_handle.sa_handler = ctrlc_handler; + sigemptyset(&ctrlc_handle.sa_mask); + ctrlc_handle.sa_flags = 0; + + sigaction(SIGTERM, &ctrlc_handle, NULL); + sigaction(SIGINT, &ctrlc_handle, NULL); + + ignore_handle.sa_handler = SIG_IGN; + sigaction(SIGPIPE, &ignore_handle, NULL); + + hup_handle.sa_handler = hup_handler; + sigemptyset(&hup_handle.sa_mask); + hup_handle.sa_flags = 0; + sigaction(SIGHUP, &hup_handle, NULL); + /* give up root privilege */ if (geteuid() == 0) { if (!getcfg("global", "Grp", str, sizeof(str)) || setegroup(str) < 0) {