]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Delay windows service startup so other command line options are processed
authorMathieu Rene <mrene@avgs.ca>
Tue, 2 Feb 2010 22:53:36 +0000 (22:53 +0000)
committerMathieu Rene <mrene@avgs.ca>
Tue, 2 Feb 2010 22:53:36 +0000 (22:53 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16558 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch.c

index 55bafb76739565cacf17120bdeb778d4f5f6725b..0ae19958eaa5d74ae79eadc34aa633c0f20acaec 100644 (file)
@@ -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();