]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
added no fork mode to the executable so it can be used w/ sipx watchdog service....
authorMichael Jerris <mike@jerris.com>
Fri, 19 Jan 2007 12:59:49 +0000 (12:59 +0000)
committerMichael Jerris <mike@jerris.com>
Fri, 19 Jan 2007 12:59:49 +0000 (12:59 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3999 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch.c

index 4a584c05ad183e467c1cfa2615417ecc444517c2..9aa32131d13f661a6261873bc8e38b3590789bcf 100644 (file)
@@ -25,6 +25,7 @@
  * 
  * Anthony Minessale II <anthmct@yahoo.com>
  * Michael Jerris <mike@jerris.com>
+ * Pawel Pierscionek <pawel@voiceworks.pl>
  *
  *
  * switch.c -- Main
@@ -194,7 +195,10 @@ int main(int argc, char *argv[])
 {
        char pid_path[256] = "";        // full path to the pid file
        const char *err = NULL;         // error value for return from freeswitch initialization
-       int bg = 0;                                     // TRUE if we are running in background mode
+#ifndef WIN32\r
+       int nf = 0;                                     // TRUE if we are running in nofork mode\r
+#endif\r
+       int nc = 0;                                     // TRUE if we are running in noconsole mode\r
        int vg = 0;                                     // TRUE if we are running in vg mode
        FILE *f;                                        // file handle to the pid file
        pid_t pid = 0;                          // 
@@ -254,6 +258,11 @@ int main(int argc, char *argv[])
                                exit(0);
                        }
                }
+#else
+\r
+               if (argv[x] && !strcmp(argv[x], "-nf")) {\r
+                       nf++;\r
+               }
 #endif
                if (argv[x] && !strcmp(argv[x], "-hp")) {
                        set_high_priority();
@@ -264,8 +273,8 @@ int main(int argc, char *argv[])
                }
 
                if (argv[x] && !strcmp(argv[x], "-nc")) {
-                       bg++;
-               }
+                       nc++;\r
+               }\r
 
                if (argv[x] && !strcmp(argv[x], "-vg")) {
                        vg++;
@@ -276,7 +285,7 @@ int main(int argc, char *argv[])
                return freeswitch_kill_background();
        }
 
-       if (bg) {
+       if (nc) {
 
                signal(SIGHUP, handle_SIGHUP);
                signal(SIGTERM, handle_SIGHUP);
@@ -284,14 +293,14 @@ int main(int argc, char *argv[])
 #ifdef WIN32
                FreeConsole();
 #else
-               if ((pid = fork())) {
+               if (!nf && (pid = fork())) {\r
                        fprintf(stderr, "%d Backgrounding.\n", (int)pid);
                        exit(0);
                }
 #endif
        }
 
-       if (switch_core_init_and_modload(bg ? lfile : NULL, &err) != SWITCH_STATUS_SUCCESS) {
+       if (switch_core_init_and_modload(nc ? lfile : NULL, &err) != SWITCH_STATUS_SUCCESS) {
                fprintf(stderr, "Cannot Initilize [%s]\n", err);
                return 255;
        }
@@ -305,7 +314,7 @@ int main(int argc, char *argv[])
        fprintf(f, "%d", pid = getpid());
        fclose(f);
 
-       switch_core_runtime_loop(bg);
+       switch_core_runtime_loop(nc);
 
        return switch_core_destroy(vg);
 }