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
This commit is contained in:
parent
9a64686104
commit
ede7970fe3
|
@ -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");
|
const char *var = switch_channel_get_variable(caller_channel, "call_timeout");
|
||||||
switch_time_t start = 0;
|
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);
|
switch_zmalloc(write_frame.data, SWITCH_RECOMMENDED_BUFFER_SIZE);
|
||||||
write_frame.buflen = 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;
|
timelimit *= 1000000;
|
||||||
start = switch_timestamp_now();
|
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)) {
|
if (switch_channel_test_flag(caller_channel, CF_ANSWERED)) {
|
||||||
ringback_data = switch_channel_get_variable(caller_channel, "transfer_ringback");
|
ringback_data = switch_channel_get_variable(caller_channel, "transfer_ringback");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue