FS-6484: guess at fixing seg from mod_managed, this function should never be called without a channel, but if it does, throw an error instead

This commit is contained in:
Michael Jerris 2014-05-05 19:18:58 -04:00
parent 0a2ba8869a
commit 3ff3f327ee

View File

@ -1348,19 +1348,24 @@ SWITCH_DECLARE(void) bridge(CoreSession &session_a, CoreSession &session_b)
SWITCH_DECLARE_NONSTD(switch_status_t) hanguphook(switch_core_session_t *session_hungup) SWITCH_DECLARE_NONSTD(switch_status_t) hanguphook(switch_core_session_t *session_hungup)
{ {
switch_channel_t *channel = switch_core_session_get_channel(session_hungup); if (session_hungup) {
CoreSession *coresession = NULL; switch_channel_t *channel = switch_core_session_get_channel(session_hungup);
switch_channel_state_t state = switch_channel_get_state(channel); CoreSession *coresession = NULL;
switch_channel_state_t state = switch_channel_get_state(channel);
if ((coresession = (CoreSession *) switch_channel_get_private(channel, "CoreSession"))) { if ((coresession = (CoreSession *) switch_channel_get_private(channel, "CoreSession"))) {
if (coresession->hook_state != state) { if (coresession->hook_state != state) {
coresession->cause = switch_channel_get_cause(channel); coresession->cause = switch_channel_get_cause(channel);
coresession->hook_state = state; coresession->hook_state = state;
coresession->check_hangup_hook(); coresession->check_hangup_hook();
}
} }
}
return SWITCH_STATUS_SUCCESS; return SWITCH_STATUS_SUCCESS;
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "hangup hook called with null session, something is horribly wrong\n");
return SWITCH_STATUS_FALSE;
}
} }