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);
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);
+
}
}
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)) {
{
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);