]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9917 [switch_rtp/core] Fix in do_flush to handle the current packet (if RFC2833...
authorchapman <chapman@rostermonster.com>
Wed, 4 Jan 2017 18:56:48 +0000 (13:56 -0500)
committerchapman <chapman@rostermonster.com>
Wed, 4 Jan 2017 18:56:48 +0000 (13:56 -0500)
only print flushed if we flushed something

src/switch_rtp.c

index 42b2f2b65575713e6bcf402e2cc4dc8292fffd2c..ab015251b6f95cf2ed0f2515f0400ea8f28bcf71 100644 (file)
@@ -5123,6 +5123,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);
                }
 
+               // 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 {
                        if (switch_rtp_ready(rtp_session)) {
                                bytes = sizeof(rtp_msg_t);
@@ -5151,6 +5160,13 @@ static switch_size_t do_flush(switch_rtp_t *rtp_session, int force, switch_size_
                        }
                } 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)) {
                        switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK);
                        switch_socket_opt_set(rtp_session->sock_input, SWITCH_SO_NONBLOCK, FALSE);