From 3a0767865d5c1866b9beadbbd812dafc65229000 Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthm@freeswitch.org>
Date: Mon, 27 Feb 2012 13:26:50 -0600
Subject: [PATCH] only flush on break when its a blocking situation

---
 src/switch_rtp.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/switch_rtp.c b/src/switch_rtp.c
index 5c966cde6e..d48d622baf 100644
--- a/src/switch_rtp.c
+++ b/src/switch_rtp.c
@@ -3097,9 +3097,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
 
 		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BREAK) || (bytes && bytes == 4 && *((int *) &rtp_session->recv_msg) == UINT_MAX)) {
 			switch_clear_flag_locked(rtp_session, SWITCH_RTP_FLAG_BREAK);
-			do_2833(rtp_session, session);
-			bytes = 0;
-			return_cng_frame();
+
+			if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_PROXY_MEDIA) || switch_test_flag(rtp_session, SWITCH_RTP_FLAG_UDPTL) || (bytes && bytes < 5) || (!bytes && poll_loop)) {
+				do_2833(rtp_session, session);
+				bytes = 0;
+				return_cng_frame();
+			}
 		}
 
 		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_FLUSH)) {