]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix white noise on SRTP decryption
authorKinsey Moore <kmoore@digium.com>
Wed, 27 Mar 2013 17:06:07 +0000 (17:06 +0000)
committerKinsey Moore <kmoore@digium.com>
Wed, 27 Mar 2013 17:06:07 +0000 (17:06 +0000)
When res_rtp_asterisk.c was altered to avoid attempting to apply
unprotect algorithms to non-audio RTP packets, the test used was
incorrect. This caused the audio packets to not be decrypted and
resulted in loud white noise on the other endpoint (or both endpoints
depending on the call legs involved). The test now properly checks the
version field in the RTP header to ensure that RTP and RTCP are
decrypted while other types of packets are not.

(closes issue ASTERISK-21323)
Reported by: andrea
Tested by: Kinsey Moore, andrea, John Bigelow
Patches:
    whitenoise_fix.diff uploaded by Kinsey Moore
........

Merged revisions 384048 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@384049 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_rtp_asterisk.c

index fd44133c5e03dd65a28ec2e37ad43dd0f87848e3..3087264f509de0a6a00e6526f07404638bbe7658 100644 (file)
@@ -1479,7 +1479,7 @@ static int __rtp_recvfrom(struct ast_rtp_instance *instance, void *buf, size_t s
                rtp->passthrough = 0;
        }
 
-       if ((*in > 1) && res_srtp && srtp && res_srtp->unprotect(srtp, buf, &len, rtcp) < 0) {
+       if ((*in & 0xC0) && res_srtp && srtp && res_srtp->unprotect(srtp, buf, &len, rtcp) < 0) {
           return -1;
        }