]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 11 Nov 2008 13:32:11 +0000 (13:32 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 11 Nov 2008 13:32:11 +0000 (13:32 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10327 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/event_handlers/mod_event_socket/mod_event_socket.c

index 7d2501774d11beeab6a8d15739e7e5b37b26e713..484489e506892a1f41543a3fcd032689a2ad8285 100644 (file)
@@ -414,12 +414,15 @@ SWITCH_STANDARD_APP(socket_function)
        if (switch_test_flag(listener, LFLAG_ASYNC)) {
                launch_listener_thread(listener);
                switch_ivr_park(session, NULL);
+               return;
        } else {
                listener_run(NULL, (void *) listener);
        }
 
-       while (switch_test_flag(listener, LFLAG_SESSION)) {
-               switch_yield(100000);
+       if (switch_channel_get_state(channel) >= CS_HANGUP) {
+               while (switch_test_flag(listener, LFLAG_SESSION)) {
+                       switch_yield(100000);
+               }
        }
 
 }
@@ -1602,8 +1605,13 @@ static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
        switch_mutex_lock(globals.listener_mutex);
        prefs.threads++;
        switch_mutex_unlock(globals.listener_mutex);
-
+       
        switch_assert(listener != NULL);
+       
+       if ((session = listener->session)) {
+               channel = switch_core_session_get_channel(session);
+               switch_core_session_read_lock(session);
+       }
 
        if (prefs.acl_count && listener->sa && !switch_strlen_zero(listener->remote_ip)) {
                uint32_t x = 0;
@@ -1624,13 +1632,7 @@ static void *SWITCH_THREAD_FUNC listener_run(switch_thread_t *thread, void *obj)
                        }
                }
        }
-
-
-       if ((session = listener->session)) {
-               channel = switch_core_session_get_channel(session);
-               switch_core_session_read_lock(session);
-       }
-
+       
        if (switch_strlen_zero(listener->remote_ip)) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Connection Open\n");
        } else {