tor-browser

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

commit 2bd550c9be8c222c9f46b0fa5c4c948426c9c780
parent 5f611c85dfc771cd6ff3258c044c27ecfed3f733
Author: Dan Baker <dbaker@mozilla.com>
Date:   Tue,  2 Dec 2025 00:01:57 -0700

Bug 2000941 - Vendor libwebrtc from 7e2fb13a72

Upstream commit: https://webrtc.googlesource.com/src/+/7e2fb13a7284a4b05a47ac972fec33fc772a2e05
    Replace RateTracker with BitrateTracker in Connection

    RateTracker uses global functions to query time, with Bitrate tracker it
    is possible to rely on the propagated clock. Extra functionality of the
    RateTracker of tracking sum of all input values is updated with direct
    update of the collected statistic values.

    Bug: webrtc:439515766
    Change-Id: Ib906065d89dd20899a9404d1f893717ff9775c96
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/410861
    Reviewed-by: Henrik Boström <hbos@webrtc.org>
    Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
    Reviewed-by: Per Kjellander <perkj@webrtc.org>
    Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#45725}

Diffstat:
Mthird_party/libwebrtc/README.mozilla.last-vendor | 4++--
Mthird_party/libwebrtc/p2p/BUILD.gn | 4++--
Mthird_party/libwebrtc/p2p/base/connection.cc | 20+++++++++++---------
Mthird_party/libwebrtc/p2p/base/connection.h | 11+++++++----
Mthird_party/libwebrtc/p2p/base/tcp_port.cc | 3+--
5 files changed, 23 insertions(+), 19 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-12-02T06:59:02.115966+00:00. +libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-12-02T07:01:44.490410+00:00. # base of lastest vendoring -fc1cbcf052 +7e2fb13a72 diff --git a/third_party/libwebrtc/p2p/BUILD.gn b/third_party/libwebrtc/p2p/BUILD.gn @@ -207,11 +207,13 @@ rtc_library("connection") { "../api/task_queue", "../api/transport:enums", "../api/transport:stun_types", + "../api/units:data_rate", "../api/units:time_delta", "../api/units:timestamp", "../logging:ice_log", "../rtc_base:async_packet_socket", "../rtc_base:base64", + "../rtc_base:bitrate_tracker", "../rtc_base:byte_buffer", "../rtc_base:callback_list", "../rtc_base:checks", @@ -229,7 +231,6 @@ rtc_library("connection") { "../rtc_base:network", "../rtc_base:network_constants", "../rtc_base:platform_thread_types", - "../rtc_base:rate_tracker", "../rtc_base:rtc_numerics", "../rtc_base:safe_minmax", "../rtc_base:sigslot_trampoline", @@ -844,7 +845,6 @@ rtc_library("tcp_port") { "../rtc_base:ip_address", "../rtc_base:logging", "../rtc_base:net_helper", - "../rtc_base:rate_tracker", "../rtc_base:socket", "../rtc_base:socket_address", "../rtc_base:timeutils", diff --git a/third_party/libwebrtc/p2p/base/connection.cc b/third_party/libwebrtc/p2p/base/connection.cc @@ -11,7 +11,6 @@ #include "p2p/base/connection.h" #include <algorithm> -#include <cmath> #include <cstddef> #include <cstdint> #include <memory> @@ -30,6 +29,7 @@ #include "api/sequence_checker.h" #include "api/task_queue/task_queue_base.h" #include "api/transport/stun.h" +#include "api/units/data_rate.h" #include "api/units/time_delta.h" #include "api/units/timestamp.h" #include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h" @@ -239,8 +239,8 @@ Connection::Connection(const Environment& env, port_(std::move(port)), local_candidate_(port_->Candidates()[index]), remote_candidate_(remote_candidate), - recv_rate_tracker_(100, 10u), - send_rate_tracker_(100, 10u), + recv_rate_tracker_(/*max_window_size=*/TimeDelta::Seconds(1)), + send_rate_tracker_(/*max_window_size=*/TimeDelta::Seconds(1)), last_send_data_(Timestamp::Zero()), write_state_(STATE_WRITE_INIT), receiving_(false), @@ -504,7 +504,8 @@ void Connection::OnReadPacket(const ReceivedIpPacket& packet) { // This is a data packet, pass it along. last_data_received_ = env_.clock().CurrentTime(); UpdateReceiving(last_data_received_); - recv_rate_tracker_.AddSamples(packet.payload().size()); + recv_rate_tracker_.Update(packet.payload().size(), last_data_received_); + stats_.recv_total_bytes += packet.payload().size(); stats_.packets_received++; if (received_packet_callback_) { received_packet_callback_(this, packet); @@ -1727,10 +1728,11 @@ uint32_t Connection::prflx_priority() const { ConnectionInfo Connection::stats() { RTC_DCHECK_RUN_ON(network_thread_); - stats_.recv_bytes_second = round(recv_rate_tracker_.ComputeRate()); - stats_.recv_total_bytes = recv_rate_tracker_.TotalSampleCount(); - stats_.sent_bytes_second = round(send_rate_tracker_.ComputeRate()); - stats_.sent_total_bytes = send_rate_tracker_.TotalSampleCount(); + Timestamp now = env_.clock().CurrentTime(); + stats_.recv_bytes_second = + recv_rate_tracker_.Rate(now).value_or(DataRate::Zero()).bps<size_t>(); + stats_.sent_bytes_second = + send_rate_tracker_.Rate(now).value_or(DataRate::Zero()).bps<size_t>(); stats_.receiving = receiving_; stats_.writable = write_state_ == STATE_WRITABLE; stats_.timeout = write_state_ == STATE_WRITE_TIMEOUT; @@ -1919,7 +1921,7 @@ int ProxyConnection::Send(const void* data, mutable_stats().sent_discarded_packets++; mutable_stats().sent_discarded_bytes += size; } else { - send_rate_tracker().AddSamplesAtTime(now.ms(), sent); + AddSentBytesToStats(sent, now); } set_last_send_data(now); return sent; diff --git a/third_party/libwebrtc/p2p/base/connection.h b/third_party/libwebrtc/p2p/base/connection.h @@ -41,11 +41,11 @@ #include "p2p/base/transport_description.h" #include "p2p/dtls/dtls_stun_piggyback_callbacks.h" #include "rtc_base/async_packet_socket.h" +#include "rtc_base/bitrate_tracker.h" #include "rtc_base/callback_list.h" #include "rtc_base/network.h" #include "rtc_base/network/received_packet.h" #include "rtc_base/numerics/event_based_exponential_moving_average.h" -#include "rtc_base/rate_tracker.h" #include "rtc_base/system/rtc_export.h" #include "rtc_base/thread_annotations.h" #include "rtc_base/weak_ptr.h" @@ -438,7 +438,10 @@ class RTC_EXPORT Connection : public CandidatePairInterface { const Environment& env() { return env_; } ConnectionInfo& mutable_stats() { return stats_; } - RateTracker& send_rate_tracker() { return send_rate_tracker_; } + void AddSentBytesToStats(int size, Timestamp now) { + send_rate_tracker_.Update(size, now); + stats_.sent_total_bytes += size; + } void set_last_send_data(Timestamp now) { last_send_data_ = now; } private: @@ -485,8 +488,8 @@ class RTC_EXPORT Connection : public CandidatePairInterface { Candidate remote_candidate_; ConnectionInfo stats_; - RateTracker recv_rate_tracker_; - RateTracker send_rate_tracker_; + BitrateTracker recv_rate_tracker_; + BitrateTracker send_rate_tracker_; Timestamp last_send_data_; WriteState write_state_ RTC_GUARDED_BY(network_thread_); diff --git a/third_party/libwebrtc/p2p/base/tcp_port.cc b/third_party/libwebrtc/p2p/base/tcp_port.cc @@ -95,7 +95,6 @@ #include "rtc_base/net_helper.h" #include "rtc_base/network/received_packet.h" #include "rtc_base/network/sent_packet.h" -#include "rtc_base/rate_tracker.h" #include "rtc_base/socket.h" #include "rtc_base/socket_address.h" #include "rtc_base/weak_ptr.h" @@ -415,7 +414,7 @@ int TCPConnection::Send(const void* data, mutable_stats().sent_discarded_packets++; error_ = socket_->GetError(); } else { - send_rate_tracker().AddSamplesAtTime(now.ms(), sent); + AddSentBytesToStats(sent, now); } set_last_send_data(now); return sent;