}
#ifdef WIN32
-SERVICE_STATUS_HANDLE hStatus;\r
-SERVICE_STATUS status;\r
-\r
-void WINAPI ServiceCtrlHandler( DWORD control )\r
-{\r
- switch( control )\r
- {\r
- case SERVICE_CONTROL_SHUTDOWN:\r
- case SERVICE_CONTROL_STOP:\r
- // do shutdown stuff here\r
- switch_core_destroy();\r
- status.dwCurrentState = SERVICE_STOPPED;\r
- status.dwWin32ExitCode = 0;\r
- status.dwCheckPoint = 0;\r
- status.dwWaitHint = 0;\r
- break;\r
- case SERVICE_CONTROL_INTERROGATE:\r
- // just set the current state to whatever it is...\r
- break;\r
- }\r
-\r
- SetServiceStatus( hStatus, &status );\r
-}\r
-\r
-void WINAPI service_main( DWORD numArgs, char **args )\r
-{\r
+SERVICE_STATUS_HANDLE hStatus;
+SERVICE_STATUS status;
+
+void WINAPI ServiceCtrlHandler( DWORD control )
+{
+ switch( control )
+ {
+ case SERVICE_CONTROL_SHUTDOWN:
+ case SERVICE_CONTROL_STOP:
+ // do shutdown stuff here
+ switch_core_destroy();
+ status.dwCurrentState = SERVICE_STOPPED;
+ status.dwWin32ExitCode = 0;
+ status.dwCheckPoint = 0;
+ status.dwWaitHint = 0;
+ break;
+ case SERVICE_CONTROL_INTERROGATE:
+ // just set the current state to whatever it is...
+ break;
+ }
+
+ SetServiceStatus( hStatus, &status );
+}
+
+void WINAPI service_main( DWORD numArgs, char **args )
+{
const char *err = NULL;
- // we have to initialize the service-specific stuff\r
- memset( &status, 0, sizeof(SERVICE_STATUS) );\r
- status.dwServiceType = SERVICE_WIN32;\r
- status.dwCurrentState = SERVICE_START_PENDING;\r
- status.dwControlsAccepted = SERVICE_ACCEPT_STOP;\r
-\r
- hStatus = RegisterServiceCtrlHandler( SERVICENAME, &ServiceCtrlHandler );\r
-\r
- SetServiceStatus( hStatus, &status );\r
+ // we have to initialize the service-specific stuff
+ memset( &status, 0, sizeof(SERVICE_STATUS) );
+ status.dwServiceType = SERVICE_WIN32;
+ status.dwCurrentState = SERVICE_START_PENDING;
+ status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
+
+ hStatus = RegisterServiceCtrlHandler( SERVICENAME, &ServiceCtrlHandler );
+
+ SetServiceStatus( hStatus, &status );
set_high_priority();
if (switch_core_init_and_modload(lfile, &err) != SWITCH_STATUS_SUCCESS) {
- status.dwCurrentState = SERVICE_STOPPED;\r
+ status.dwCurrentState = SERVICE_STOPPED;
} else {
status.dwCurrentState = SERVICE_RUNNING;
}
-\r
- SetServiceStatus( hStatus, &status );\r
-}\r
-\r
+
+ SetServiceStatus( hStatus, &status );
+}
+
#endif
int main(int argc, char *argv[])
};
if (argv[1] && !strcmp(argv[1], "-service")) {
- if(StartServiceCtrlDispatcher( dispatchTable ) == 0 )\r
- {\r
- //Not loaded as a service\r
+ 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");
- }\r
- exit(0);\r
+ }
+ exit(0);
}
if (argv[1] && !strcmp(argv[1], "-install")) {
char exePath[1024];
char servicePath[1024];
- SC_HANDLE handle = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );\r
+ SC_HANDLE handle = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
GetModuleFileName( NULL, exePath, 1024 );
snprintf(servicePath, sizeof(servicePath), "%s -service", exePath);
- CreateService(\r
- handle,\r
- SERVICENAME,\r
- SERVICENAME,\r
- GENERIC_READ | GENERIC_EXECUTE,\r
- SERVICE_WIN32_OWN_PROCESS,\r
- SERVICE_AUTO_START,\r
- SERVICE_ERROR_IGNORE,\r
- servicePath,\r
- NULL,\r
- NULL,\r
- NULL,\r
- NULL,\r
- NULL\r
- );\r
+ 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[1] && !strcmp(argv[1], "-uninstall")) {
- SC_HANDLE handle = OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );\r
- SC_HANDLE service = OpenService( handle, SERVICENAME, DELETE );\r
- if( service != NULL )\r
- {\r
- // remove the service!\r
- DeleteService( service );\r
- }\r
+ 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 );
+ }
exit(0);
}
#endif
char exePath[1024];
char *lastbacklash;
GetModuleFileName( NULL, exePath, BUFSIZE );
- lastbacklash = strrchr( exePath, '\\');\r
+ lastbacklash = strrchr( exePath, '\\');
exePath[(lastbacklash - exePath + 1)] = '\0';
- if ((SWITCH_GLOBAL_dirs.base_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.base_dir && (SWITCH_GLOBAL_dirs.base_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.base_dir, BUFSIZE, "%s", exePath);
}
- if ((SWITCH_GLOBAL_dirs.mod_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.mod_dir && (SWITCH_GLOBAL_dirs.mod_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.mod_dir, BUFSIZE, "%s\\mod", exePath);
}
- if ((SWITCH_GLOBAL_dirs.conf_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.conf_dir && (SWITCH_GLOBAL_dirs.conf_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.conf_dir, BUFSIZE, "%s\\conf", exePath);
}
- if ((SWITCH_GLOBAL_dirs.log_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.log_dir && (SWITCH_GLOBAL_dirs.log_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.log_dir, BUFSIZE, "%s\\log", exePath);
}
- if ((SWITCH_GLOBAL_dirs.db_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.db_dir && (SWITCH_GLOBAL_dirs.db_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.db_dir, BUFSIZE, "%s\\db", exePath);
}
- if ((SWITCH_GLOBAL_dirs.script_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.script_dir && (SWITCH_GLOBAL_dirs.script_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.script_dir, BUFSIZE, "%s\\scripts", exePath);
}
- if ((SWITCH_GLOBAL_dirs.htdocs_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.htdocs_dir && (SWITCH_GLOBAL_dirs.htdocs_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.htdocs_dir, BUFSIZE, "%s\\mod", exePath);
}
#else
#else
#ifdef WIN32
GetTempPath(dwBufSize, lpPathBuffer);
- if ((SWITCH_GLOBAL_dirs.htdocs_dir = (char *) malloc(BUFSIZE))) {
+ if (!SWITCH_GLOBAL_dirs.htdocs_dir && (SWITCH_GLOBAL_dirs.htdocs_dir = (char *) malloc(BUFSIZE))) {
snprintf(SWITCH_GLOBAL_dirs.htdocs_dir, BUFSIZE, "%s", lpPathBuffer);
}
#else
apr_terminate();
}
+#ifdef WIN32
+ free(SWITCH_GLOBAL_dirs.base_dir);
+ free(SWITCH_GLOBAL_dirs.mod_dir);
+ free(SWITCH_GLOBAL_dirs.conf_dir);
+ free(SWITCH_GLOBAL_dirs.log_dir);
+ free(SWITCH_GLOBAL_dirs.db_dir);
+ free(SWITCH_GLOBAL_dirs.script_dir);
+ free(SWITCH_GLOBAL_dirs.htdocs_dir);
+ free(SWITCH_GLOBAL_dirs.temp_dir);
+#endif
+
return SWITCH_STATUS_SUCCESS;
}