From ed327e6fe7531895f65b09b8bdd04043a23b194e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Sun, 22 Mar 2009 18:23:24 +0000 Subject: [PATCH] tweak lua hangup hook git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12713 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/languages/mod_lua/freeswitch_lua.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index e30eb8b697..0f7ef7750a 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -133,10 +133,18 @@ static switch_status_t lua_hanguphook(switch_core_session_t *session_hungup) CoreSession *coresession = NULL; switch_channel_state_t state = switch_channel_get_state(channel); - if ((coresession = (CoreSession *) switch_channel_get_private(channel, "CoreSession"))) { - if (coresession->hook_state != state) { + if (session_hungup) { + + channel = switch_core_session_get_channel(session_hungup); + + if (channel) { + coresession = (CoreSession *) switch_channel_get_private(channel, "CoreSession"); + } + + if (coresession && coresession->allocated && (state == CS_HANGUP || state == CS_ROUTING) && coresession->hook_state != state) { coresession->hook_state = state; coresession->check_hangup_hook(); + switch_core_event_hook_remove_state_change(session_hungup, lua_hanguphook); } }