FS-9917 [switch_rtp/core] Fix in do_flush to handle the current packet (if RFC2833) rather than discard it.
only print flushed if we flushed something
This commit is contained in:
parent
605ac486c1
commit
89d3e29fa8
|
@ -5113,6 +5113,15 @@ static switch_size_t do_flush(switch_rtp_t *rtp_session, int force, switch_size_
|
||||||
switch_socket_opt_set(rtp_session->sock_input, SWITCH_SO_NONBLOCK, TRUE);
|
switch_socket_opt_set(rtp_session->sock_input, SWITCH_SO_NONBLOCK, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// before processing/flushing packets, if current packet is rfc2833, handle it (else it would be lost)
|
||||||
|
if (bytes_in > rtp_header_len && rtp_session->last_rtp_hdr.version == 2 && rtp_session->last_rtp_hdr.pt == rtp_session->recv_te) {
|
||||||
|
int do_cng = 0;
|
||||||
|
#ifdef DEBUG_2833
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "*** Handling current RTP packet before flushing. seq=%u ***\n", ntohs(rtp_session->last_rtp_hdr.seq));
|
||||||
|
#endif
|
||||||
|
handle_rfc2833(rtp_session, bytes_in, &do_cng);
|
||||||
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
if (switch_rtp_ready(rtp_session)) {
|
if (switch_rtp_ready(rtp_session)) {
|
||||||
bytes = sizeof(rtp_msg_t);
|
bytes = sizeof(rtp_msg_t);
|
||||||
|
@ -5141,6 +5150,13 @@ static switch_size_t do_flush(switch_rtp_t *rtp_session, int force, switch_size_
|
||||||
}
|
}
|
||||||
} while (bytes > 0);
|
} while (bytes > 0);
|
||||||
|
|
||||||
|
#ifdef DEBUG_2833
|
||||||
|
if (flushed) {
|
||||||
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "*** do_flush: total flushed packets: %ld ***\n",(long)flushed);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
if (was_blocking && switch_rtp_ready(rtp_session)) {
|
if (was_blocking && switch_rtp_ready(rtp_session)) {
|
||||||
switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK);
|
switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK);
|
||||||
switch_socket_opt_set(rtp_session->sock_input, SWITCH_SO_NONBLOCK, FALSE);
|
switch_socket_opt_set(rtp_session->sock_input, SWITCH_SO_NONBLOCK, FALSE);
|
||||||
|
|
Loading…
Reference in New Issue