tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit d97db77f059f00296bd1020b9293c3feee68c160
parent fc763bf069cc972e418da1ded0adfd19ef758e83
Author: Dan Baker <dbaker@mozilla.com>
Date:   Wed, 22 Oct 2025 14:16:09 -0600

Bug 1995393 - Vendor libwebrtc from 5e8d17b3c4

Upstream commit: https://webrtc.googlesource.com/src/+/5e8d17b3c43a5d007c3169cd34c03bcd25508308
    sdp munging: remove WebRTC-NoSdpMangleNumberOfContents killswitch

    since
    https://chromiumdash.appspot.com/commit/5edfd244fed9a339f6279cdccb4d57d0c6749b21
    shipped in M138

    Bug: webrtc:416088632,webrtc:40567530
    Change-Id: I5d234e5e1d5a48e5372ce1ec439e48f08dd2fe05
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/402911
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Reviewed-by: Evan Shrubsole <eshr@webrtc.org>
    Commit-Queue: Philipp Hancke <phancke@meta.com>
    Cr-Commit-Position: refs/heads/main@{#45293}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/experiments/field_trials.py | 3---
Mthird_party/libwebrtc/moz-patch-stack/p0001.patch | 2+-
Mthird_party/libwebrtc/pc/sdp_munging_detector.cc | 10++++++++--
Mthird_party/libwebrtc/pc/sdp_munging_detector_unittest.cc | 31+------------------------------
Mthird_party/libwebrtc/pc/sdp_offer_answer.cc | 4----
6 files changed, 12 insertions(+), 42 deletions(-)

diff --git a/third_party/libwebrtc/README.mozilla.last-vendor b/third_party/libwebrtc/README.mozilla.last-vendor @@ -1,4 +1,4 @@ # ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc -libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-22T20:13:39.982338+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-22T20:15:56.169426+00:00. # base of lastest vendoring -ae82143fd8 +5e8d17b3c4 diff --git a/third_party/libwebrtc/experiments/field_trials.py b/third_party/libwebrtc/experiments/field_trials.py @@ -122,9 +122,6 @@ ACTIVE_FIELD_TRIALS: FrozenSet[FieldTrial] = frozenset([ FieldTrial('WebRTC-NoSdpMangleUfragRestrictedAddresses', 409713509, date(2025, 10, 11)), - FieldTrial('WebRTC-NoSdpMangleNumberOfContents', - 40567530, - date(2025, 10, 11)), FieldTrial('WebRTC-NoSdpMangleReject', 40567530, date(2026, 6, 1)), diff --git a/third_party/libwebrtc/moz-patch-stack/p0001.patch b/third_party/libwebrtc/moz-patch-stack/p0001.patch @@ -26,7 +26,7 @@ Cr-Branched-From: 9bd64751d9b3b35a820cb72c9029993e218146a1-refs/heads/main@{#452 1 file changed, 6 insertions(+) diff --git a/pc/sdp_munging_detector.cc b/pc/sdp_munging_detector.cc -index addfa25c02..f54aeaa86a 100644 +index 445697251a..88a69b39c8 100644 --- a/pc/sdp_munging_detector.cc +++ b/pc/sdp_munging_detector.cc @@ -424,6 +424,12 @@ SdpMungingType DetermineSdpMungingType( diff --git a/third_party/libwebrtc/pc/sdp_munging_detector.cc b/third_party/libwebrtc/pc/sdp_munging_detector.cc @@ -604,8 +604,14 @@ bool HasUfragSdpMunging(const SessionDescriptionInterface* sdesc, bool IsSdpMungingAllowed(SdpMungingType sdp_munging_type, const FieldTrialsView& trials) { - if (sdp_munging_type == SdpMungingType::kNoModification) { - return true; + switch (sdp_munging_type) { + case SdpMungingType::kNoModification: + return true; + case SdpMungingType::kNumberOfContents: + return false; + default: + // Handled below. + break; } std::string type_as_string = std::to_string(static_cast<int>(sdp_munging_type)); diff --git a/third_party/libwebrtc/pc/sdp_munging_detector_unittest.cc b/third_party/libwebrtc/pc/sdp_munging_detector_unittest.cc @@ -679,7 +679,7 @@ TEST_F(SdpMungingTest, DtlsRole) { ElementsAre(Pair(SdpMungingType::kDtlsSetup, 1))); } -TEST_F(SdpMungingTest, RemoveContentDefault) { +TEST_F(SdpMungingTest, RemoveContentRejected) { auto pc = CreatePeerConnection(); pc->AddAudioTrack("audio_track", {}); @@ -707,35 +707,6 @@ TEST_F(SdpMungingTest, RemoveContentDefault) { ElementsAre(Pair(static_cast<int>(SdpMungingOutcome::kRejected), 1))); } -TEST_F(SdpMungingTest, RemoveContentKillswitch) { - auto pc = - CreatePeerConnection("WebRTC-NoSdpMangleNumberOfContents/Disabled/"); - pc->AddAudioTrack("audio_track", {}); - - std::unique_ptr<SessionDescriptionInterface> offer = pc->CreateOffer(); - auto& contents = offer->description()->contents(); - ASSERT_EQ(contents.size(), 1u); - auto name = contents[0].mid(); - EXPECT_TRUE(offer->description()->RemoveContentByName(contents[0].mid())); - std::string sdp; - offer->ToString(&sdp); - auto modified_offer = CreateSessionDescription( - SdpType::kOffer, - absl::StrReplaceAll(sdp, {{"a=group:BUNDLE " + name, "a=group:BUNDLE"}})); - - RTCError error; - EXPECT_TRUE(pc->SetLocalDescription(std::move(modified_offer), &error)); - EXPECT_THAT( - metrics::Samples("WebRTC.PeerConnection.SdpMunging.Offer.Initial"), - ElementsAre(Pair(SdpMungingType::kNumberOfContents, 1))); - EXPECT_THAT( - metrics::Samples("WebRTC.PeerConnection.SdpMunging.SdpOutcome.Accepted"), - ElementsAre(Pair(SdpMungingType::kNumberOfContents, 1))); - EXPECT_THAT( - metrics::Samples("WebRTC.PeerConnection.SdpMunging.Outcome"), - ElementsAre(Pair(static_cast<int>(SdpMungingOutcome::kAccepted), 1))); -} - TEST_F(SdpMungingTest, TransceiverDirection) { auto pc = CreatePeerConnection(); pc->AddAudioTrack("audio_track", {}); diff --git a/third_party/libwebrtc/pc/sdp_offer_answer.cc b/third_party/libwebrtc/pc/sdp_offer_answer.cc @@ -2483,10 +2483,6 @@ void SdpOfferAnswerHandler::DoSetLocalDescription( RTC_LOG(LS_ERROR) << "Rejecting SDP because of ufrag modification"; reject_error = true; } - } else if (sdp_munging_type == kNumberOfContents && - !pc_->trials().IsDisabled( - "WebRTC-NoSdpMangleNumberOfContents")) { - reject_error = true; } else { reject_error = !IsSdpMungingAllowed(sdp_munging_type, pc_->trials()); }