mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-08-13 09:36:46 +00:00
spring cleaning
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4795 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
181
src/switch.c
181
src/switch.c
@@ -69,7 +69,7 @@ static HANDLE shutdown_event;
|
||||
static void handle_SIGHUP(int sig)
|
||||
{
|
||||
uint32_t arg = 0;
|
||||
if(sig);
|
||||
if (sig);
|
||||
/* send shutdown signal to the freeswitch core */
|
||||
switch_core_session_ctl(SCSC_SHUTDOWN, &arg);
|
||||
return;
|
||||
@@ -78,9 +78,9 @@ static void handle_SIGHUP(int sig)
|
||||
/* kill a freeswitch process running in background mode */
|
||||
static int freeswitch_kill_background()
|
||||
{
|
||||
FILE *f; /* FILE handle to open the pid file */
|
||||
char path[256] = ""; /* full path of the PID file */
|
||||
pid_t pid = 0; /* pid from the pid file */
|
||||
FILE *f; /* FILE handle to open the pid file */
|
||||
char path[256] = ""; /* full path of the PID file */
|
||||
pid_t pid = 0; /* pid from the pid file */
|
||||
|
||||
/* set the globals so we can use the global paths. */
|
||||
switch_core_set_globals();
|
||||
@@ -139,10 +139,9 @@ SERVICE_STATUS_HANDLE hStatus;
|
||||
SERVICE_STATUS status;
|
||||
|
||||
/* Handler function for service start/stop from the service */
|
||||
void WINAPI ServiceCtrlHandler( DWORD control )
|
||||
void WINAPI ServiceCtrlHandler(DWORD control)
|
||||
{
|
||||
switch( control )
|
||||
{
|
||||
switch (control) {
|
||||
case SERVICE_CONTROL_SHUTDOWN:
|
||||
case SERVICE_CONTROL_STOP:
|
||||
/* Shutdown freeswitch */
|
||||
@@ -159,24 +158,24 @@ void WINAPI ServiceCtrlHandler( DWORD control )
|
||||
break;
|
||||
}
|
||||
|
||||
SetServiceStatus( hStatus, &status );
|
||||
SetServiceStatus(hStatus, &status);
|
||||
}
|
||||
|
||||
/* the main service entry point */
|
||||
void WINAPI service_main( DWORD numArgs, char **args )
|
||||
void WINAPI service_main(DWORD numArgs, char **args)
|
||||
{
|
||||
const char *err = NULL; /* error value for return from freeswitch initialization */
|
||||
/* we have to initialize the service-specific stuff */
|
||||
memset( &status, 0, sizeof(SERVICE_STATUS) );
|
||||
memset(&status, 0, sizeof(SERVICE_STATUS));
|
||||
status.dwServiceType = SERVICE_WIN32;
|
||||
status.dwCurrentState = SERVICE_START_PENDING;
|
||||
status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
|
||||
|
||||
/* register our handler for service control messages */
|
||||
hStatus = RegisterServiceCtrlHandler( SERVICENAME, &ServiceCtrlHandler );
|
||||
hStatus = RegisterServiceCtrlHandler(SERVICENAME, &ServiceCtrlHandler);
|
||||
|
||||
/* update the service status */
|
||||
SetServiceStatus( hStatus, &status );
|
||||
SetServiceStatus(hStatus, &status);
|
||||
|
||||
/* run freeswitch with elevated priority */
|
||||
set_high_priority();
|
||||
@@ -191,7 +190,7 @@ void WINAPI service_main( DWORD numArgs, char **args )
|
||||
}
|
||||
|
||||
/* update the service status */
|
||||
SetServiceStatus( hStatus, &status );
|
||||
SetServiceStatus(hStatus, &status);
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -206,50 +205,47 @@ int main(int argc, char *argv[])
|
||||
#endif
|
||||
int nc = 0; /* TRUE if we are running in noconsole mode */
|
||||
FILE *f; /* file handle to the pid file */
|
||||
pid_t pid = 0;
|
||||
int x;
|
||||
int die = 0;
|
||||
char *usageDesc;
|
||||
pid_t pid = 0;
|
||||
int x;
|
||||
int die = 0;
|
||||
char *usageDesc;
|
||||
int alt_dirs = 0;
|
||||
|
||||
#ifdef WIN32
|
||||
SERVICE_TABLE_ENTRY dispatchTable[] =
|
||||
{
|
||||
{ SERVICENAME, &service_main },
|
||||
{ NULL, NULL }
|
||||
SERVICE_TABLE_ENTRY dispatchTable[] = {
|
||||
{SERVICENAME, &service_main},
|
||||
{NULL, NULL}
|
||||
};
|
||||
usageDesc = "these are the optional arguments you can pass to freeswitch\n"
|
||||
"\t-service -- start freeswitch as a service, cannot be used if loaded as a console app\n"
|
||||
"\t-install -- install freeswitch as a service\n"
|
||||
"\t-uninstall -- remove freeswitch as a service\n"
|
||||
"\t-hp -- enable high priority settings\n"
|
||||
"\t-stop -- stop freeswitch\n"
|
||||
"\t-nc -- do not output to a console and background\n"
|
||||
"\t-conf [confdir] -- specify an alternate config dir\n"
|
||||
"\t-log [logdir] -- specify an alternate log dir\n"
|
||||
"\t-db [dbdir] -- specify an alternate db dir\n";
|
||||
usageDesc = "these are the optional arguments you can pass to freeswitch\n"
|
||||
"\t-service -- start freeswitch as a service, cannot be used if loaded as a console app\n"
|
||||
"\t-install -- install freeswitch as a service\n"
|
||||
"\t-uninstall -- remove freeswitch as a service\n"
|
||||
"\t-hp -- enable high priority settings\n"
|
||||
"\t-stop -- stop freeswitch\n"
|
||||
"\t-nc -- do not output to a console and background\n"
|
||||
"\t-conf [confdir] -- specify an alternate config dir\n"
|
||||
"\t-log [logdir] -- specify an alternate log dir\n" "\t-db [dbdir] -- specify an alternate db dir\n";
|
||||
#else
|
||||
usageDesc = "these are the optional arguments you can pass to freeswitch\n"
|
||||
"\t-help -- this message\n"
|
||||
"\t-nf -- no forking\n"
|
||||
"\t-hp -- enable high priority settings\n"
|
||||
"\t-stop -- stop freeswitch\n"
|
||||
"\t-nc -- do not output to a console and background\n"
|
||||
"\t-conf [confdir] -- specify an alternate config dir\n"
|
||||
"\t-log [logdir] -- specify an alternate log dir\n"
|
||||
"\t-db [dbdir] -- specify an alternate db dir\n";
|
||||
usageDesc = "these are the optional arguments you can pass to freeswitch\n"
|
||||
"\t-help -- this message\n"
|
||||
"\t-nf -- no forking\n"
|
||||
"\t-hp -- enable high priority settings\n"
|
||||
"\t-stop -- stop freeswitch\n"
|
||||
"\t-nc -- do not output to a console and background\n"
|
||||
"\t-conf [confdir] -- specify an alternate config dir\n"
|
||||
"\t-log [logdir] -- specify an alternate log dir\n" "\t-db [dbdir] -- specify an alternate db dir\n";
|
||||
|
||||
#endif
|
||||
|
||||
for (x = 1; x < argc; x++) {
|
||||
if (argv[x] && !strcmp(argv[x], "-help")) {
|
||||
printf("%s\n",usageDesc);
|
||||
exit(0);
|
||||
printf("%s\n", usageDesc);
|
||||
exit(0);
|
||||
}
|
||||
#ifdef WIN32
|
||||
if (x == 1) {
|
||||
if (argv[x] && !strcmp(argv[x], "-service")) {
|
||||
if(StartServiceCtrlDispatcher( dispatchTable ) == 0 ) {
|
||||
if (StartServiceCtrlDispatcher(dispatchTable) == 0) {
|
||||
/* Not loaded as a service */
|
||||
fprintf(stderr, "Error Freeswitch loaded as a console app with -service option\n");
|
||||
fprintf(stderr, "To install the service load freeswitch with -install\n");
|
||||
@@ -260,32 +256,23 @@ int main(int argc, char *argv[])
|
||||
char exePath[1024];
|
||||
char servicePath[1024];
|
||||
|
||||
SC_HANDLE handle = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
|
||||
GetModuleFileName( NULL, exePath, 1024 );
|
||||
SC_HANDLE handle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
|
||||
GetModuleFileName(NULL, exePath, 1024);
|
||||
snprintf(servicePath, sizeof(servicePath), "%s -service", exePath);
|
||||
CreateService(
|
||||
handle,
|
||||
SERVICENAME,
|
||||
SERVICENAME,
|
||||
GENERIC_READ | GENERIC_EXECUTE,
|
||||
SERVICE_WIN32_OWN_PROCESS,
|
||||
SERVICE_AUTO_START,
|
||||
SERVICE_ERROR_IGNORE,
|
||||
servicePath,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
);
|
||||
CreateService(handle,
|
||||
SERVICENAME,
|
||||
SERVICENAME,
|
||||
GENERIC_READ | GENERIC_EXECUTE,
|
||||
SERVICE_WIN32_OWN_PROCESS,
|
||||
SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, servicePath, NULL, NULL, NULL, NULL, NULL);
|
||||
exit(0);
|
||||
}
|
||||
if (argv[x] && !strcmp(argv[x], "-uninstall")) {
|
||||
SC_HANDLE handle = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
|
||||
SC_HANDLE service = OpenService( handle, SERVICENAME, DELETE );
|
||||
if( service != NULL ) {
|
||||
SC_HANDLE handle = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
|
||||
SC_HANDLE service = OpenService(handle, SERVICENAME, DELETE);
|
||||
if (service != NULL) {
|
||||
/* remove the service! */
|
||||
DeleteService( service );
|
||||
DeleteService(service);
|
||||
}
|
||||
exit(0);
|
||||
}
|
||||
@@ -309,49 +296,49 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
|
||||
if (argv[x] && !strcmp(argv[x], "-conf")) {
|
||||
x++;
|
||||
if (argv[x] && strlen(argv[x])) {
|
||||
SWITCH_GLOBAL_dirs.conf_dir = (char *) malloc(strlen(argv[x])+1);
|
||||
strcpy(SWITCH_GLOBAL_dirs.conf_dir,argv[x]);
|
||||
if (argv[x] && !strcmp(argv[x], "-conf")) {
|
||||
x++;
|
||||
if (argv[x] && strlen(argv[x])) {
|
||||
SWITCH_GLOBAL_dirs.conf_dir = (char *) malloc(strlen(argv[x]) + 1);
|
||||
strcpy(SWITCH_GLOBAL_dirs.conf_dir, argv[x]);
|
||||
alt_dirs++;
|
||||
} else {
|
||||
fprintf(stderr, "When using -conf you must specify a config directory\n");
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "When using -conf you must specify a config directory\n");
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
|
||||
if (argv[x] && !strcmp(argv[x], "-log")) {
|
||||
x++;
|
||||
if (argv[x] && strlen(argv[x])) {
|
||||
SWITCH_GLOBAL_dirs.log_dir = (char *) malloc(strlen(argv[x])+1);
|
||||
strcpy(SWITCH_GLOBAL_dirs.log_dir,argv[x]);
|
||||
if (argv[x] && !strcmp(argv[x], "-log")) {
|
||||
x++;
|
||||
if (argv[x] && strlen(argv[x])) {
|
||||
SWITCH_GLOBAL_dirs.log_dir = (char *) malloc(strlen(argv[x]) + 1);
|
||||
strcpy(SWITCH_GLOBAL_dirs.log_dir, argv[x]);
|
||||
alt_dirs++;
|
||||
} else {
|
||||
fprintf(stderr, "When using -log you must specify a log directory\n");
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "When using -log you must specify a log directory\n");
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
|
||||
if (argv[x] && !strcmp(argv[x], "-db")) {
|
||||
x++;
|
||||
if (argv[x] && strlen(argv[x])) {
|
||||
SWITCH_GLOBAL_dirs.db_dir = (char *) malloc(strlen(argv[x])+1);
|
||||
strcpy(SWITCH_GLOBAL_dirs.db_dir,argv[x]);
|
||||
if (argv[x] && !strcmp(argv[x], "-db")) {
|
||||
x++;
|
||||
if (argv[x] && strlen(argv[x])) {
|
||||
SWITCH_GLOBAL_dirs.db_dir = (char *) malloc(strlen(argv[x]) + 1);
|
||||
strcpy(SWITCH_GLOBAL_dirs.db_dir, argv[x]);
|
||||
alt_dirs++;
|
||||
} else {
|
||||
fprintf(stderr, "When using -db you must specify a db directory\n");
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
fprintf(stderr, "When using -db you must specify a db directory\n");
|
||||
return 255;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (die) {
|
||||
return freeswitch_kill_background();
|
||||
}
|
||||
|
||||
if (alt_dirs && alt_dirs !=3) {
|
||||
if (alt_dirs && alt_dirs != 3) {
|
||||
fprintf(stderr, "You must use -conf, -log, and -db together\n");
|
||||
return 255;
|
||||
}
|
||||
@@ -365,7 +352,7 @@ int main(int argc, char *argv[])
|
||||
FreeConsole();
|
||||
#else
|
||||
if (!nf && (pid = fork())) {
|
||||
fprintf(stderr, "%d Backgrounding.\n", (int)pid);
|
||||
fprintf(stderr, "%d Backgrounding.\n", (int) pid);
|
||||
exit(0);
|
||||
}
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user