From 79b63206b99912d9a5f97a35b546409886a8fed2 Mon Sep 17 00:00:00 2001 From: "stefan@webrtc.org" Date: Wed, 4 Dec 2013 13:34:28 +0000 Subject: [PATCH] Fixes a crash in fullstack tests introduced with r5209. TBR=mflodman@webrtc.org BUG=1812 Review URL: https://webrtc-codereview.appspot.com/4689005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5211 4adac7df-926f-26a2-2b94-8c16560cd09d --- webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc | 6 ++---- .../modules/rtp_rtcp/source/rtp_packet_history_unittest.cc | 5 ++--- webrtc/modules/rtp_rtcp/source/rtp_sender.cc | 7 ++++++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc b/webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc index fc288b7411..14ca821f7e 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_packet_history.cc @@ -254,12 +254,10 @@ bool RTPPacketHistory::GetPacketAndSetSendTime(uint16_t sequence_number, ((now - stored_send_times_.at(index)) < min_elapsed_time_ms)) { WEBRTC_TRACE(kTraceStream, kTraceRtpRtcp, -1, "Skip getting packet %u, packet recently resent.", sequence_number); - *packet_length = 0; - return true; + return false; } - if (length == 0 || - (retransmit && stored_types_.at(index) == kDontRetransmit)) { + if (retransmit && stored_types_.at(index) == kDontRetransmit) { // No bytes copied since this packet shouldn't be retransmitted or is // of zero size. return false; diff --git a/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc index d0bbf92220..1682b7c338 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_packet_history_unittest.cc @@ -249,8 +249,7 @@ TEST_F(RtpPacketHistoryTest, MinResendTime) { // Time has not elapsed. Packet should be found, but no bytes copied. len = kMaxPacketLength; - EXPECT_TRUE(hist_->GetPacketAndSetSendTime(kSeqNum, 101, false, packet_, &len, - &time)); - EXPECT_EQ(0, len); + EXPECT_FALSE(hist_->GetPacketAndSetSendTime(kSeqNum, 101, false, packet_, + &len, &time)); } } // namespace webrtc diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc index 60be774742..0f08573efd 100644 --- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc +++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc @@ -560,7 +560,12 @@ int32_t RTPSender::ReSendPacket(uint16_t packet_id, uint32_t min_resend_time) { ModuleRTPUtility::RTPHeaderParser rtp_parser(data_buffer, length); RTPHeader header; - rtp_parser.Parse(header); + if (!rtp_parser.Parse(header)) { + assert(false); + WEBRTC_TRACE(kTraceError, kTraceRtpRtcp, id_, + "Failed to parse RTP header of packet to be retransmitted."); + return -1; + } TRACE_EVENT_INSTANT2("webrtc_rtp", "RTPSender::ReSendPacket", "timestamp", header.timestamp, "seqnum", header.sequenceNumber);