[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