diff --git a/src/switch.c b/src/switch.c index 55bafb7673..0ae19958ea 100644 --- a/src/switch.c +++ b/src/switch.c @@ -267,6 +267,8 @@ int main(int argc, char *argv[]) int nf = 0; /* TRUE if we are running in nofork mode */ char *runas_user = NULL; char *runas_group = NULL; +#else + int win32_service = 0; #endif int nc = 0; /* TRUE if we are running in noconsole mode */ pid_t pid = 0; @@ -357,19 +359,9 @@ int main(int argc, char *argv[]) } else { switch_copy_string(service_name, SERVICENAME_DEFAULT, SERVICENAME_MAXLEN); } - { /* Attempt to start service */ - SERVICE_TABLE_ENTRY dispatchTable[] = { - {service_name, &service_main}, - {NULL, NULL} - }; - known_opt++; - 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"); - } - exit(0); - } + known_opt++; + win32_service++; + continue; } if (local_argv[x] && !strcmp(local_argv[x], "-install")) { char exePath[1024]; @@ -744,6 +736,21 @@ int main(int argc, char *argv[]) return 255; } } +#else + if (win32_service) { + { /* Attempt to start service */ + SERVICE_TABLE_ENTRY dispatchTable[] = { + {service_name, &service_main}, + {NULL, NULL} + }; + 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"); + } + exit(0); + } + } #endif switch_core_set_globals();