]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix win shutdown in both places
authorAnthony Minessale <anthony.minessale@gmail.com>
Fri, 16 Oct 2009 16:54:54 +0000 (16:54 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Fri, 16 Oct 2009 16:54:54 +0000 (16:54 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@15169 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_core.c

index dac26e80e1a0cf5746e123bf72a1dfba159ee7d8..cd90384443df8065a72c0262a1bfb2d9ed9aeff8 100644 (file)
@@ -1528,6 +1528,28 @@ SWITCH_DECLARE(switch_time_t) switch_core_uptime(void)
        return switch_micro_time_now() - runtime.initiated;
 }
 
+
+#ifdef _MSC_VER
+static void win_shutdown(void)
+{
+       
+       HANDLE shutdown_event;  
+       char path[512];
+       /* for windows we need the event to signal for shutting down a background FreeSWITCH */
+       snprintf(path, sizeof(path), "Global\\Freeswitch.%d", getpid());
+       
+       /* open the event so we can signal it */
+       shutdown_event = OpenEvent(EVENT_MODIFY_STATE, FALSE, path);
+       
+       if (shutdown_event) {
+               /* signal the event to shutdown */
+               SetEvent(shutdown_event);
+               /* cleanup */
+               CloseHandle(shutdown_event);
+       }
+}
+#endif
+
 SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, int32_t *val)
 {
        if (switch_test_flag((&runtime), SCF_SHUTTING_DOWN)) {
@@ -1579,11 +1601,18 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, int32_
                        
                        if (switch_test_flag((&runtime), SCF_SHUTDOWN_REQUESTED)) {
                                switch_set_flag((&runtime), SCF_NO_NEW_SESSIONS);
+#ifdef _MSC_VER
+                               win_shutdown();
+#endif
+
                                if (*val) {
                                        switch_set_flag((&runtime), SCF_RESTART);
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n");
                                } else {
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Shutting down\n");
+#ifdef _MSC_VER
+                                       fclose(stdin);
+#endif
                                }
                                runtime.running = 0;
                        } else {
@@ -1595,26 +1624,9 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, int32_
        case SCSC_SHUTDOWN:
 
 #ifdef _MSC_VER
-               {
-                       HANDLE shutdown_event;  
-                       char path[512];
-                       /* for windows we need the event to signal for shutting down a background FreeSWITCH */
-                       snprintf(path, sizeof(path), "Global\\Freeswitch.%d", getpid());
-
-                       /* open the event so we can signal it */
-                       shutdown_event = OpenEvent(EVENT_MODIFY_STATE, FALSE, path);
-
-               
-                       if (shutdown_event) {
-                               /* signal the event to shutdown */
-                               SetEvent(shutdown_event);
-                               /* cleanup */
-                               CloseHandle(shutdown_event);
-                       }
-               }
+               win_shutdown();
 #endif
 
-
                if (*val) {
                        switch_set_flag((&runtime), SCF_RESTART);
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Restarting\n");