From 77ac925dc574f23feb71b7654b93ad82d6675a80 Mon Sep 17 00:00:00 2001 From: Andrew Thompson Date: Tue, 26 Jan 2010 15:44:46 +0000 Subject: [PATCH] Don't exit the entire listener for a single session failure (reported by Timur Irmatov) git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@16516 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../mod_erlang_event/mod_erlang_event.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c index 42d8f3c8dc..e2823bdbed 100644 --- a/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c +++ b/src/mod/event_handlers/mod_erlang_event/mod_erlang_event.c @@ -532,14 +532,20 @@ static switch_status_t check_attached_sessions(listener_t *listener) while(sp) { removed = NULL; if (switch_test_flag(sp, LFLAG_WAITING_FOR_PID)) { - break; + sp = sp->next; + continue; } if (!switch_test_flag(sp, LFLAG_OUTBOUND_INIT)) { status = notify_new_session(listener, sp); if (status != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_UUID_LOG(sp->uuid_str), SWITCH_LOG_DEBUG, "Notifying new session failed\n"); - break; + removed = sp; + sp = removed->next; + + remove_session_elem_from_listener(listener, removed); + destroy_session_elem(removed); + continue; } switch_set_flag(sp, LFLAG_OUTBOUND_INIT); } @@ -610,7 +616,11 @@ static switch_status_t check_attached_sessions(listener_t *listener) sp = sp->next; } switch_mutex_unlock(listener->session_mutex); - return status; + if (prefs.done) { + return SWITCH_STATUS_FALSE; /* we're shutting down */ + } else { + return SWITCH_STATUS_SUCCESS; + } } static void check_log_queue(listener_t *listener)