tor-browser

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

commit 8f3ffbe2f224b7c053a330fd90ea7b3e666a33fd
parent 566abf4c1f885dd2f7d4bf1038fef44fd61855aa
Author: Dan Baker <dbaker@mozilla.com>
Date:   Thu, 23 Oct 2025 14:57:38 -0600

Bug 1995393 - Vendor libwebrtc from b6fea3135a

Upstream commit: https://webrtc.googlesource.com/src/+/b6fea3135a02bb793c8e284203bcf63340dde25e
    Add transport_name to CandidatePairChangeEvent

    The native Candidate objects within a CandidatePairChangeEvent do not
    always contain a transport_name (aka mid). That creates issues where the
    transport name is required to properly construct IceCandidate objects
    for compatibility with other APIs.

    This change adds the transport_name to the CandidatePairChangeEvent and
    setting it in P2pTransportChannel. Downstream consumers, including the
    JNI and Objective-C layers, are updated to use the new field instead of
    the one on the candidate.

    Bug: webrtc:42233526
    Change-Id: Icb411331af61fada3770b4d65002520ae1d18c7d
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/403761
    Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
    Reviewed-by: Harald Alvestrand <hta@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45330}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/p2p/base/p2p_transport_channel.cc | 28+++++++++++-----------------
Mthird_party/libwebrtc/p2p/base/p2p_transport_channel_unittest.cc | 1+
Mthird_party/libwebrtc/p2p/base/port.h | 1+
Mthird_party/libwebrtc/pc/jsep_transport_controller.cc | 1+
Mthird_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnection.mm | 8++------
6 files changed, 18 insertions(+), 25 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-23T20:54:58.860135+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-23T20:57:23.783956+00:00. # base of lastest vendoring -59d21f6bc8 +b6fea3135a diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel.cc b/third_party/libwebrtc/p2p/base/p2p_transport_channel.cc @@ -1879,23 +1879,17 @@ void P2PTransportChannel::SwitchSelectedConnectionInternal( SignalNetworkRouteChanged(network_route_); // Create event for candidate pair change. - if (selected_connection_) { - CandidatePairChangeEvent pair_change; - pair_change.reason = IceSwitchReasonToString(reason); - pair_change.selected_candidate_pair = *GetSelectedCandidatePair(); - pair_change.last_data_received_ms = - selected_connection_->last_data_received(); - - if (old_selected_connection) { - pair_change.estimated_disconnected_time_ms = - ComputeEstimatedDisconnectedTimeMs(TimeMillis(), - old_selected_connection); - } else { - pair_change.estimated_disconnected_time_ms = 0; - } - if (candidate_pair_change_callback_) { - candidate_pair_change_callback_(pair_change); - } + if (selected_connection_ && candidate_pair_change_callback_) { + CandidatePairChangeEvent pair_change = { + .transport_name = transport_name(), + .selected_candidate_pair = *GetSelectedCandidatePair(), + .last_data_received_ms = selected_connection_->last_data_received(), + .reason = IceSwitchReasonToString(reason), + .estimated_disconnected_time_ms = + old_selected_connection ? ComputeEstimatedDisconnectedTimeMs( + TimeMillis(), old_selected_connection) + : 0}; + candidate_pair_change_callback_(pair_change); } ++selected_candidate_pair_changes_; diff --git a/third_party/libwebrtc/p2p/base/p2p_transport_channel_unittest.cc b/third_party/libwebrtc/p2p/base/p2p_transport_channel_unittest.cc @@ -3727,6 +3727,7 @@ class P2PTransportChannelPingTest : public ::testing::Test, channel_state_ = channel->GetState(); } void OnCandidatePairChanged(const CandidatePairChangeEvent& event) { + RTC_DCHECK(!event.transport_name.empty()); last_candidate_change_event_ = event; } diff --git a/third_party/libwebrtc/p2p/base/port.h b/third_party/libwebrtc/p2p/base/port.h @@ -146,6 +146,7 @@ struct IceCandidateErrorEvent { }; struct CandidatePairChangeEvent { + std::string transport_name; CandidatePair selected_candidate_pair; int64_t last_data_received_ms; std::string reason; diff --git a/third_party/libwebrtc/pc/jsep_transport_controller.cc b/third_party/libwebrtc/pc/jsep_transport_controller.cc @@ -1302,6 +1302,7 @@ void JsepTransportController::OnTransportCandidatesRemoved_n( } void JsepTransportController::OnTransportCandidatePairChanged_n( const CandidatePairChangeEvent& event) { + RTC_DCHECK(!event.transport_name.empty()); signal_ice_candidate_pair_changed_.Send(event); } diff --git a/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnection.mm b/third_party/libwebrtc/sdk/objc/api/peerconnection/RTCPeerConnection.mm @@ -391,16 +391,12 @@ void PeerConnectionDelegateAdapter::OnIceSelectedCandidatePairChanged( } const auto &selected_pair = event.selected_candidate_pair; IceCandidate local_candidate_wrapper( - selected_pair.local_candidate().transport_name(), - -1, - selected_pair.local_candidate()); + event.transport_name, -1, selected_pair.local_candidate()); RTC_OBJC_TYPE(RTCIceCandidate) *local_candidate = [[RTC_OBJC_TYPE(RTCIceCandidate) alloc] initWithNativeCandidate:&local_candidate_wrapper]; IceCandidate remote_candidate_wrapper( - selected_pair.remote_candidate().transport_name(), - -1, - selected_pair.remote_candidate()); + event.transport_name, -1, selected_pair.remote_candidate()); RTC_OBJC_TYPE(RTCIceCandidate) *remote_candidate = [[RTC_OBJC_TYPE(RTCIceCandidate) alloc] initWithNativeCandidate:&remote_candidate_wrapper];