From ede7970fe31bddd6ba0d79791ec2fd5627d1d100 Mon Sep 17 00:00:00 2001 From: Michael Jerris Date: Mon, 19 May 2008 19:24:20 +0000 Subject: [PATCH] don't leak on switch_ivr_wait_for_answer when peer channel is already answered or pre-answered. Found by Klockwork (www.klocwork.com) git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@8471 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_ivr_originate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c index a4ffca704d..1e42c57530 100644 --- a/src/switch_ivr_originate.c +++ b/src/switch_ivr_originate.c @@ -268,6 +268,10 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_answer(switch_core_session_t const char *var = switch_channel_get_variable(caller_channel, "call_timeout"); switch_time_t start = 0; + if ((switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) { + return SWITCH_STATUS_SUCCESS; + } + switch_zmalloc(write_frame.data, SWITCH_RECOMMENDED_BUFFER_SIZE); write_frame.buflen = SWITCH_RECOMMENDED_BUFFER_SIZE; @@ -281,10 +285,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_answer(switch_core_session_t timelimit *= 1000000; start = switch_timestamp_now(); - if ((switch_channel_test_flag(peer_channel, CF_ANSWERED) || switch_channel_test_flag(peer_channel, CF_EARLY_MEDIA))) { - return SWITCH_STATUS_SUCCESS; - } - if (switch_channel_test_flag(caller_channel, CF_ANSWERED)) { ringback_data = switch_channel_get_variable(caller_channel, "transfer_ringback"); }