From fe1711fdbab9ccf7c1565c0309fe7609fcfe1afc Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthm@freeswitch.org>
Date: Wed, 12 Jan 2011 20:02:49 -0600
Subject: [PATCH] eat rtp frames with the wrong payload type number

---
 src/switch_rtp.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/switch_rtp.c b/src/switch_rtp.c
index a56b5d11dd..5794ae7f28 100644
--- a/src/switch_rtp.c
+++ b/src/switch_rtp.c
@@ -2493,7 +2493,14 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
 				return_cng_frame();
 			}
 		}
-		
+
+		if (rtp_session->recv_msg.header.pt != 13 && 
+			(!rtp_session->cng_pt || rtp_session->recv_msg.header.pt != rtp_session->cng_pt) && 
+			rtp_session->recv_msg.header.pt != rtp_session->payload) {
+			/* drop frames of incorrect payload number and return CNG frame instead */
+			return_cng_frame();
+		}
+
 		if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_ENABLE_RTCP) && rtp_session->rtcp_read_pollfd) {
 			rtcp_poll_status = switch_poll(rtp_session->rtcp_read_pollfd, 1, &rtcp_fdr, 0);