]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweak lua hangup hook (part 2)
authorAnthony Minessale <anthony.minessale@gmail.com>
Sun, 22 Mar 2009 18:35:55 +0000 (18:35 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Sun, 22 Mar 2009 18:35:55 +0000 (18:35 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12714 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/languages/mod_lua/freeswitch_lua.cpp

index 0f7ef7750ad385dd32d41b6d9473aa3b63ac99e4..63242a2e55cc2841f6d27893f8aad0d82adfa59e 100644 (file)
@@ -24,6 +24,10 @@ static switch_status_t lua_hanguphook(switch_core_session_t *session_hungup);
 Session::~Session()
 {
 
+       if (channel) {
+               switch_channel_set_private(channel, "CoreSession", NULL);
+       }
+
        if (hangup_func_str) {
                if (session) {
                        switch_core_event_hook_remove_state_change(session, lua_hanguphook);
@@ -141,6 +145,10 @@ static switch_status_t lua_hanguphook(switch_core_session_t *session_hungup)
                        coresession = (CoreSession *) switch_channel_get_private(channel, "CoreSession");
                }
                
+               if (!(coresession && coresession->hook_state)) {
+                       return SWITCH_STATUS_FALSE;
+               }
+
                if (coresession && coresession->allocated && (state == CS_HANGUP || state == CS_ROUTING) && coresession->hook_state != state) {
                        coresession->hook_state = state;
                        coresession->check_hangup_hook();