From: Anthony Minessale Date: Thu, 28 Jul 2016 21:27:17 +0000 (-0500) Subject: FS-9390 #resolve ['Segmentation fault' during call setup] X-Git-Tag: v1.6.10~1^2~50 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9fe7c48df7ffc937218d92b305e3d5bba06b06ea;p=thirdparty%2Ffreeswitch.git FS-9390 #resolve ['Segmentation fault' during call setup] --- diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index 47b49725a4..d35cb9662f 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -1759,9 +1759,18 @@ static void *SWITCH_THREAD_FUNC early_thread_run(switch_thread_t *thread, void * switch_codec_implementation_t read_impl = { 0 }; for (i = 0; i < MAX_PEERS && i < state->ttl; i++) { - if (switch_core_session_read_lock(state->originate_status[i].peer_session) == SWITCH_STATUS_SUCCESS) { - originate_status[i].peer_session = state->originate_status[i].peer_session; - originate_status[i].peer_channel = switch_core_session_get_channel(state->originate_status[i].peer_session); + switch_core_session_t *session = state->originate_status[i].peer_session; + switch_channel_t *channel = NULL; + + if (session) channel = switch_core_session_get_channel(session); + + if (!session || !channel || !switch_channel_up(channel)) { + continue; + } + + if (switch_core_session_read_lock(session) == SWITCH_STATUS_SUCCESS) { + originate_status[i].peer_session = session; + originate_status[i].peer_channel = channel; } }