Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(684)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtp_sender.cc

Issue 2190913002: Fix bug where transport sequence numbers are allocated for packets without the header extension reg… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/modules/rtp_rtcp/source/rtp_sender.cc
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
index 25016e053f2b43a948f803846fda364423d31dbe..51d8c334799fc2a93ecfa09a415458fa0fa4e274 100644
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc
@@ -591,9 +591,9 @@ size_t RTPSender::SendPadData(size_t bytes,
size_t padding_bytes_in_packet =
std::min(MaxDataPayloadLength(), kMaxPaddingLength);
size_t bytes_sent = 0;
- bool using_transport_seq = rtp_header_extension_map_.IsRegistered(
- kRtpExtensionTransportSequenceNumber) &&
- transport_sequence_number_allocator_;
+ bool using_transport_seq =
+ IsRtpHeaderExtensionRegistered(kRtpExtensionTransportSequenceNumber) &&
+ transport_sequence_number_allocator_;
for (; bytes > 0; bytes -= padding_bytes_in_packet) {
if (bytes < padding_bytes_in_packet)
bytes = padding_bytes_in_packet;
@@ -647,9 +647,13 @@ size_t RTPSender::SendPadData(size_t bytes,
}
uint8_t padding_packet[IP_PACKET_SIZE];
- size_t header_length =
- CreateRtpHeader(padding_packet, payload_type, ssrc, false, timestamp,
- sequence_number, std::vector<uint32_t>());
+ size_t header_length = 0;
+ {
+ rtc::CritScope lock(&send_critsect_);
+ header_length =
+ CreateRtpHeader(padding_packet, payload_type, ssrc, false, timestamp,
+ sequence_number, std::vector<uint32_t>());
+ }
BuildPaddingPacket(padding_packet, header_length, padding_bytes_in_packet);
size_t length = padding_bytes_in_packet + header_length;
int64_t now_ms = clock_->TimeInMilliseconds();
@@ -666,7 +670,8 @@ size_t RTPSender::SendPadData(size_t bytes,
UpdateAbsoluteSendTime(padding_packet, length, rtp_header, now_ms);
PacketOptions options;
- if (AllocateTransportSequenceNumber(&options.packet_id)) {
+ if (IsRtpHeaderExtensionRegistered(kRtpExtensionTransportSequenceNumber) &&
+ AllocateTransportSequenceNumber(&options.packet_id)) {
if (UpdateTransportSequenceNumber(options.packet_id, padding_packet,
length, rtp_header)) {
if (transport_feedback_observer_)
@@ -859,7 +864,8 @@ bool RTPSender::PrepareAndSendPacket(uint8_t* buffer,
UpdateAbsoluteSendTime(buffer_to_send_ptr, length, rtp_header, now_ms);
PacketOptions options;
- if (AllocateTransportSequenceNumber(&options.packet_id)) {
+ if (IsRtpHeaderExtensionRegistered(kRtpExtensionTransportSequenceNumber) &&
+ AllocateTransportSequenceNumber(&options.packet_id)) {
if (UpdateTransportSequenceNumber(options.packet_id, buffer_to_send_ptr,
length, rtp_header)) {
if (transport_feedback_observer_)
@@ -992,7 +998,8 @@ int32_t RTPSender::SendToNetwork(uint8_t* buffer,
}
PacketOptions options;
- if (AllocateTransportSequenceNumber(&options.packet_id)) {
+ if (IsRtpHeaderExtensionRegistered(kRtpExtensionTransportSequenceNumber) &&
+ AllocateTransportSequenceNumber(&options.packet_id)) {
if (UpdateTransportSequenceNumber(options.packet_id, buffer, length,
rtp_header)) {
if (transport_feedback_observer_)

Powered by Google App Engine
This is Rietveld 408576698