diff --git a/aiortc/rtcrtpreceiver.py b/aiortc/rtcrtpreceiver.py
index <HASH>..<HASH> 100644
--- a/aiortc/rtcrtpreceiver.py
+++ b/aiortc/rtcrtpreceiver.py
@@ -69,7 +69,11 @@ class RTCRtpReceiver:
 
             # skip RTCP for now
             if is_rtcp(data):
-                for packet in RtcpPacket.parse(data):
+                try:
+                    packets = RtcpPacket.parse(data)
+                except ValueError:
+                    continue
+                for packet in packets:
                     logger.debug('receiver(%s) < %s' % (self._kind, packet))
 
             # handle RTP
diff --git a/tests/test_rtcrtpreceiver.py b/tests/test_rtcrtpreceiver.py
index <HASH>..<HASH> 100644
--- a/tests/test_rtcrtpreceiver.py
+++ b/tests/test_rtcrtpreceiver.py
@@ -44,6 +44,9 @@ class RTCRtpReceiverTest(TestCase):
         # receive RTCP
         run(remote.send(load('rtcp_sr.bin')))
 
+        # receive truncated RTCP
+        run(remote.send(b'\x81\xca\x00'))
+
         # receive garbage
         run(remote.send(b'garbage'))
[rtp] don't bomb when receiving malformed RTCP