]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
only flush on break when its a blocking situation
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 27 Feb 2012 19:26:50 +0000 (13:26 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 27 Feb 2012 19:26:50 +0000 (13:26 -0600)
src/switch_rtp.c

index 5c966cde6e4ee269433cfb75d6c70e5af4a1952c..d48d622baf05de3692338e2e4545d23fc75ab8c3 100644 (file)
@@ -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)) {