Send a "call_hangup" to outbound/handlecall sessions when the relevant channel is hungup

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12635 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Andrew Thompson 2009-03-16 23:31:55 +00:00
parent 8928727293
commit 3eba7e3602
1 changed files with 9 additions and 4 deletions

View File

@ -524,6 +524,7 @@ static switch_status_t check_attached_sessions(listener_t *listener)
switch_mutex_lock(listener->sock_mutex);
ei_sendto(listener->ec, listener->sockfd, &sp->process, &ebuf);
switch_mutex_unlock(listener->sock_mutex);
ei_x_free(&ebuf);
/* event is a hangup, so this session can be removed */
if (pevent->event_id == SWITCH_EVENT_CHANNEL_HANGUP) {
@ -535,20 +536,24 @@ static switch_status_t check_attached_sessions(listener_t *listener)
else
listener->session_list = sp->next;
switch_channel_clear_flag(switch_core_session_get_channel(sp->session), CF_CONTROLLED);
/* this allows the application threads to exit */
switch_clear_flag_locked(sp, LFLAG_SESSION_ALIVE);
switch_core_session_rwunlock(sp->session);
removed = 1;
ei_x_new_with_version(&ebuf);
ei_x_encode_atom(&ebuf, "call_hangup");
switch_mutex_lock(listener->sock_mutex);
ei_sendto(listener->ec, listener->sockfd, &sp->process, &ebuf);
switch_mutex_unlock(listener->sock_mutex);
ei_x_free(&ebuf);
/* TODO
if this listener was created outbound, and the last session has been detached
should the listener also exit? Does it matter?
*/
}
ei_x_free(&ebuf);
switch_event_destroy(&pevent);
}
if (!removed)