Author: mikej Date: Mon May 19 15:24:20 2008 New Revision: 8471 Modified: freeswitch/trunk/src/switch_ivr_originate.c Log: don't leak on switch_ivr_wait_for_answer when peer channel is already answered or pre-answered. Found by Klockwork (www.klocwork.com) Modified: freeswitch/trunk/src/switch_ivr_originate.c ============================================================================== --- freeswitch/trunk/src/switch_ivr_originate.c (original) +++ freeswitch/trunk/src/switch_ivr_originate.c Mon May 19 15:24:20 2008 @@ -268,6 +268,10 @@ 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 @@ 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"); }
participants (1)
-
Freeswitch SVN