Fixed pidfile handling
authorArt Cancro <ajc@citadel.org>
Thu, 28 Dec 2006 18:26:21 +0000 (18:26 +0000)
committerArt Cancro <ajc@citadel.org>
Thu, 28 Dec 2006 18:26:21 +0000 (18:26 +0000)
webcit/setup.c
webcit/webserver.c

index 1baca4c20a8c1a2918302f8a5189c1d29c6a78a0..9d64a5dcc1f0292f64aa63ae2b5aee464eeabcf3 100644 (file)
@@ -421,7 +421,6 @@ void install_init_scripts(void)
        fprintf(fp,     "CTDL_HOSTNAME=%s\n", hostname);
        fprintf(fp,     "CTDL_PORTNAME=%s\n", portname);
        fprintf(fp,     "\n"
-                       "test -d /var/run || exit 0\n"
                        "\n"
                        "case \"$1\" in\n"
                        "\n"
index fe23a84890e90bfad474c72f7c2f34f66b00a2ff..3af120551b000f134d629af500c46f8453c6fcf9 100644 (file)
@@ -480,21 +480,14 @@ void start_daemon(char *pid_file)
         */
        chdir("/");
 
+       signal(SIGHUP, SIG_IGN);
+       signal(SIGINT, SIG_IGN);
+       signal(SIGQUIT, SIG_IGN);
+
        child = fork();
        if (child != 0) {
-               if (pid_file) {
-                       fp = fopen(pid_file, "w");
-                       if (fp != NULL) {
-                               fprintf(fp, "%d\n", child);
-                               fclose(fp);
-                       }
-               }
                exit(0);
        }
-       
-       signal(SIGHUP, SIG_IGN);
-       signal(SIGINT, SIG_IGN);
-       signal(SIGQUIT, SIG_IGN);
 
        setsid();
        umask(0);
@@ -518,6 +511,13 @@ void start_daemon(char *pid_file)
        
                else {
                        signal(SIGTERM, SIG_IGN);
+                       if (pid_file) {
+                               fp = fopen(pid_file, "w");
+                               if (fp != NULL) {
+                                       fprintf(fp, "%d\n", current_child);
+                                       fclose(fp);
+                               }
+                       }
                        waitpid(current_child, &status, 0);
                }