From 377043e0ef1599b873ac68c60b6dbbbf9438749e Mon Sep 17 00:00:00 2001 From: Anthony Minessale <anthony.minessale@gmail.com> Date: Sun, 22 Mar 2009 21:32:08 +0000 Subject: [PATCH] update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12718 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/languages/mod_lua/freeswitch_lua.cpp | 17 +++++++++++++++-- src/switch_cpp.cpp | 4 ++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp index 67984b7566..a5c1cd8007 100644 --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp @@ -32,7 +32,7 @@ Session::~Session() if (session) { switch_core_event_hook_remove_state_change(session, lua_hanguphook); } - free(hangup_func_str); + switch_safe_free(hangup_func_str); } switch_safe_free(hangup_func_arg); @@ -128,6 +128,16 @@ void Session::do_hangup_hook() if (!switch_strlen_zero(err)) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "%s\n", err); } + + if (channel) { + switch_channel_set_private(channel, "CoreSession", NULL); + } + + if (session) { + switch_core_event_hook_remove_state_change(session, lua_hanguphook); + } + switch_safe_free(hangup_func_str); + } } @@ -142,7 +152,10 @@ static switch_status_t lua_hanguphook(switch_core_session_t *session_hungup) channel = switch_core_session_get_channel(session_hungup); if (channel) { - coresession = (Session *) switch_channel_get_private(channel, "CoreSession"); + void *vs = switch_channel_get_private(channel, "CoreSession"); + if (vs) { + coresession = (Session *) vs; + } } if (!(coresession && coresession->hook_state)) { diff --git a/src/switch_cpp.cpp b/src/switch_cpp.cpp index 6ea314a5ca..ebd13bf191 100644 --- a/src/switch_cpp.cpp +++ b/src/switch_cpp.cpp @@ -888,6 +888,10 @@ SWITCH_DECLARE(void) CoreSession::destroy(void) { this_check_void(); + if (channel) { + switch_channel_set_private(channel, "CoreSession", NULL); + } + switch_safe_free(xml_cdr_text); switch_safe_free(uuid); switch_safe_free(tts_name);