[Freeswitch-svn] [commit] r3999 - freeswitch/trunk/src

Freeswitch SVN mikej at freeswitch.org
Fri Jan 19 07:59:49 EST 2007


Author: mikej
Date: Fri Jan 19 07:59:49 2007
New Revision: 3999

Modified:
   freeswitch/trunk/src/switch.c

Log:
added no fork mode to the executable so it can be used w/ sipx watchdog service.  This mode is not available on windows as we do not fork on windows regardless.  Thanks to Paweł Pierścionek for the contribution.

Modified: freeswitch/trunk/src/switch.c
==============================================================================
--- freeswitch/trunk/src/switch.c	(original)
+++ freeswitch/trunk/src/switch.c	Fri Jan 19 07:59:49 2007
@@ -25,6 +25,7 @@
  * 
  * Anthony Minessale II <anthmct at yahoo.com>
  * Michael Jerris <mike at jerris.com>
+ * Pawel Pierscionek <pawel at voiceworks.pl>
  *
  *
  * switch.c -- Main
@@ -194,7 +195,10 @@
 {
 	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
+	int nf = 0;					// TRUE if we are running in nofork mode
+#endif
+	int nc = 0;					// TRUE if we are running in noconsole mode
 	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 @@
 				exit(0);
 			}
 		}
+#else
+
+		if (argv[x] && !strcmp(argv[x], "-nf")) {
+			nf++;
+		}
 #endif
 		if (argv[x] && !strcmp(argv[x], "-hp")) {
 			set_high_priority();
@@ -264,8 +273,8 @@
 		}
 
 		if (argv[x] && !strcmp(argv[x], "-nc")) {
-			bg++;
-		}
+			nc++;
+		}
 
 		if (argv[x] && !strcmp(argv[x], "-vg")) {
 			vg++;
@@ -276,7 +285,7 @@
 		return freeswitch_kill_background();
 	}
 
-	if (bg) {
+	if (nc) {
 
 		signal(SIGHUP, handle_SIGHUP);
 		signal(SIGTERM, handle_SIGHUP);
@@ -284,14 +293,14 @@
 #ifdef WIN32
 		FreeConsole();
 #else
-		if ((pid = fork())) {
+		if (!nf && (pid = fork())) {
 			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 @@
 	fprintf(f, "%d", pid = getpid());
 	fclose(f);
 
-	switch_core_runtime_loop(bg);
+	switch_core_runtime_loop(nc);
 
 	return switch_core_destroy(vg);
 }



More information about the Freeswitch-svn mailing list