commit add8be8cdc2d09c33c4d5175ea71eb4e9ff2dee5
parent 428e74644a594d37ac660c3a227d3745f18a40e9
Author: Dan Baker <dbaker@mozilla.com>
Date: Mon, 27 Oct 2025 14:39:57 -0600
Bug 1995393 - Vendor libwebrtc from f4370b1ca4
Upstream commit: https://webrtc.googlesource.com/src/+/f4370b1ca4c12ba2d3aa611f8d67c7fc999eaca1
Make the Network copy operator fail if signals are connected
Copying an object with connected signals is hard to reason about.
So don't allow it.
This is needed in order to facilitate moving away from sigslots.
We also allow a default move operator in order to handle vectors of Network
objects.
Bug: webrtc:42222066
Change-Id: I76e127f2750f4574835ef8dbbd0f2816544afa20
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/406740
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45467}
Diffstat:
3 files changed, 27 insertions(+), 5 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-27T20:37:46.464583+00:00.
+libwebrtc updated from /Users/danielbaker/elm/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2025-10-27T20:39:44.829483+00:00.
# base of lastest vendoring
-8eaab284f3
+f4370b1ca4
diff --git a/third_party/libwebrtc/rtc_base/network.cc b/third_party/libwebrtc/rtc_base/network.cc
@@ -1117,7 +1117,28 @@ Network::Network(absl::string_view name,
type_(type),
preference_(0) {}
-Network::Network(const Network&) = default;
+Network::Network(const Network& o)
+ : default_local_address_provider_(o.default_local_address_provider_),
+ mdns_responder_provider_(o.mdns_responder_provider_),
+ name_(o.name_),
+ description_(o.description_),
+ prefix_(o.prefix_),
+ prefix_length_(o.prefix_length_),
+ key_(o.key_),
+ ips_(o.ips_),
+ scope_id_(o.scope_id_),
+ ignored_(o.ignored_),
+ type_(o.type_),
+ underlying_type_for_vpn_(o.underlying_type_for_vpn_),
+ preference_(o.preference_),
+ active_(o.active_),
+ id_(o.id_),
+ network_preference_(o.network_preference_) {
+ // Copying a Network with signals set is hard to reason about.
+ // So don't allow it.
+ RTC_CHECK(SignalTypeChanged.is_empty());
+ RTC_CHECK(SignalNetworkPreferenceChanged.is_empty());
+}
Network::~Network() = default;
diff --git a/third_party/libwebrtc/rtc_base/network.h b/third_party/libwebrtc/rtc_base/network.h
@@ -226,8 +226,9 @@ class RTC_EXPORT Network {
const IPAddress& prefix,
int prefix_length,
AdapterType type);
-
- Network(const Network&);
+ // Copying a Network only works if signal listeners have not been set.
+ Network(const Network& o);
+ Network(Network&&) = default;
~Network();
// This signal is fired whenever type() or underlying_type_for_vpn() changes.