From 7846aaa4c25187568de1f71d70351a82b8feafc3 Mon Sep 17 00:00:00 2001 From: Thomas Bernard Date: Fri, 7 Oct 2011 11:36:07 +0200 Subject: [PATCH] minissdpd: daemonize after init In order to fail launch and return an error to the parent process if the init fails. See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644509 --- minissdpd/Changelog.txt | 1 + minissdpd/minissdpd.c | 29 +++++++++++++++-------------- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/minissdpd/Changelog.txt b/minissdpd/Changelog.txt index 64342b9..e9e9f9f 100644 --- a/minissdpd/Changelog.txt +++ b/minissdpd/Changelog.txt @@ -3,6 +3,7 @@ $Id: Changelog.txt,v 1.20 2011/10/07 09:21:19 nanard Exp $ 2011/10/07: unlink unix socket before binding. set SO_REUSEADDR on SSDP socket. + daemonize after init VERSION 1.1: diff --git a/minissdpd/minissdpd.c b/minissdpd/minissdpd.c index 428f526..a3bc5c0 100644 --- a/minissdpd/minissdpd.c +++ b/minissdpd/minissdpd.c @@ -819,18 +819,6 @@ int main(int argc, char * * argv) return 1; } - /* daemonize or in any case get pid ! */ - if(debug_flag) - pid = getpid(); - else { -#ifdef USE_DAEMON - if(daemon(0, 0) < 0) - perror("daemon()"); - pid = getpid(); -#else - pid = daemonize(); -#endif - } /* open log */ openlog("minissdpd", LOG_CONS|LOG_PID|(debug_flag?LOG_PERROR:0), @@ -844,8 +832,6 @@ int main(int argc, char * * argv) return 1; } - writepidfile(pidfilename, pid); - /* set signal handlers */ memset(&sa, 0, sizeof(struct sigaction)); sa.sa_handler = sigterm; @@ -923,6 +909,21 @@ int main(int argc, char * * argv) } #endif + /* daemonize or in any case get pid ! */ + if(debug_flag) + pid = getpid(); + else { +#ifdef USE_DAEMON + if(daemon(0, 0) < 0) + perror("daemon()"); + pid = getpid(); +#else + pid = daemonize(); +#endif + } + + writepidfile(pidfilename, pid); + /* Main loop */ while(!quitting) {