Fix bug where rtcp::TransportFeedback may generate incorrect messages.

In particular, if 14 short deltas were inserted (2 * capacity of status
vector chunk with 2bit items) followed by a large delta, that status
item would be dropped.

BUG=

Review URL: https://codereview.webrtc.org/1367193002

Cr-Commit-Position: refs/heads/master@{#10132}
This commit is contained in:
sprang
2015-10-01 03:06:57 -07:00
committed by Commit bot
parent b09b660c53
commit 49f9cdba02
4 changed files with 94 additions and 5 deletions

View File

@ -1235,13 +1235,13 @@ bool RTCPUtility::RTCPParserV2::ParseFBCommon(const RtcpCommonHeader& header) {
return true;
}
case 15: {
_packetType = RTCPPacketTypes::kTransportFeedback;
rtcp_packet_ =
rtcp::TransportFeedback::ParseFrom(_ptrRTCPData - 12, length);
// Since we parse the whole packet here, keep the TopLevel state and
// just end the current block.
EndCurrentBlock();
if (rtcp_packet_.get()) {
EndCurrentBlock();
_packetType = RTCPPacketTypes::kTransportFeedback;
return true;
}
break;