From a1bc3db310c5df3cebb7fd745fbf626477b143a9 Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Tue, 24 Jan 2012 17:23:06 +0100 Subject: [PATCH] Fix daemon modes (Aggregator, Listener, Client) daemon() must be called prior to set up signal handlers and threads. --- owlps-aggregator/owlps-aggregatord.c | 16 ++++++++-------- owlps-client/owlps-client.c | 14 +++++++------- owlps-listener/owlps-listenerd.c | 16 ++++++++-------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/owlps-aggregator/owlps-aggregatord.c b/owlps-aggregator/owlps-aggregatord.c index c014cc4..a58bcd4 100644 --- a/owlps-aggregator/owlps-aggregatord.c +++ b/owlps-aggregator/owlps-aggregatord.c @@ -51,6 +51,14 @@ int main(int argc, char **argv) if (! owl_run) goto exit ; + if (cfg_getbool(cfg, "daemon")) + { + if (VERBOSE_WARNING) + fprintf(stderr, "Detaching to background...\n") ; + if (daemon(0, 0)) + perror("Cannot daemonize") ; + } + /* Set up signal handlers */ action.sa_flags = 0 ; sigemptyset(&action.sa_mask) ; @@ -102,14 +110,6 @@ int main(int argc, char **argv) } } - if (cfg_getbool(cfg, "daemon")) - { - if (VERBOSE_WARNING) - fprintf(stderr, "Detaching to background...\n") ; - if (daemon(0, 0)) - perror("Cannot daemonize") ; - } - ret = read_loop(sockfd) ; /* Wait for the threads to terminate */ diff --git a/owlps-client/owlps-client.c b/owlps-client/owlps-client.c index bc59884..491043a 100644 --- a/owlps-client/owlps-client.c +++ b/owlps-client/owlps-client.c @@ -100,6 +100,13 @@ int main(int argc, char *argv[]) program_name = argv[0] ; parse_command_line(argc, argv) ; + if (options.daemon) + { + fprintf(stderr, "Detaching to background...\n") ; + if (daemon(0, 0)) + perror("Cannot daemonize") ; + } + /* Set up signal handlers */ action.sa_flags = 0 ; sigemptyset(&action.sa_mask) ; @@ -108,13 +115,6 @@ int main(int argc, char *argv[]) action.sa_handler = owl_sigterm_handler ; sigaction(SIGTERM, &action, NULL) ; - if (options.daemon) - { - fprintf(stderr, "Detaching to background...\n") ; - if (daemon(0, 0)) - perror("Cannot daemonize") ; - } - create_socket() ; send_request() ; diff --git a/owlps-listener/owlps-listenerd.c b/owlps-listener/owlps-listenerd.c index 3bfff5b..0a7f329 100644 --- a/owlps-listener/owlps-listenerd.c +++ b/owlps-listener/owlps-listenerd.c @@ -131,6 +131,14 @@ int main(int argc, char *argv[]) if (! owl_run) goto exit ; + if (GET_DAEMON()) + { + if (VERBOSE_WARNING) + fprintf(stderr, "Detaching to background...\n") ; + if (daemon(0, 0)) + perror("Cannot daemonize") ; + } + /* Set up signal handlers */ action.sa_flags = 0 ; sigemptyset(&action.sa_mask) ; @@ -185,14 +193,6 @@ int main(int argc, char *argv[]) } #endif // USE_PTHREAD - if (GET_DAEMON()) - { - if (VERBOSE_WARNING) - fprintf(stderr, "Detaching to background...\n") ; - if (daemon(0, 0)) - perror("Cannot daemonize") ; - } - ret = capture() ; // Capture loop /* Wait for the threads to terminate */