Pārlūkot izejas kodu

core: take in consideration --no-atexit for daemonize()

Daniel-Constantin Mierla 4 gadi atpakaļ
vecāks
revīzija
7ab2e85437
2 mainītis faili ar 12 papildinājumiem un 2 dzēšanām
  1. 4 2
      src/core/daemonize.c
  2. 8 0
      src/core/daemonize.h

+ 4 - 2
src/core/daemonize.c

@@ -69,6 +69,8 @@
 #define MAX_FD 32 /* maximum number of inherited open file descriptors,
 		    (normally it shouldn't  be bigger  than 3) */
 
+extern int ksr_no_atexit;
+
 /** temporary pipe FDs for sending exit status back to the ancestor process.
  * This pipe is used to send the desired exit status to the initial process,
  * that waits for it in the foreground. This way late errors preventing
@@ -297,9 +299,9 @@ int daemonize(char*  name,  int status_wait)
 			goto error;
 		}else if (pid!=0){
 			if (status_wait) {
-				if (daemon_status_wait(&pipe_status) == 0)
+				if (daemon_status_wait(&pipe_status) == 0) {
 					exit((int)pipe_status);
-				else{
+				} else {
 					LM_ERR("Main process exited before writing to pipe\n");
 					exit(-1);
 				}

+ 8 - 0
src/core/daemonize.h

@@ -41,6 +41,14 @@ int daemon_status_send(char status);
 void daemon_status_no_wait(void);
 void daemon_status_on_fork_cleanup(void);
 
+#define ksr_exit(exvar, excode) do { \
+		if(exvar==1) { \
+			_exit(excode); \
+		} else { \
+			exit(excode); \
+		} \
+	} while(0)
+
 #endif /*_daemonize_h */
 
 /* vi: set ts=4 sw=4 tw=79:ai:cindent: */