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)) {