Use const rtc::Network* in ports and port allocator
No-try: True
Bug: webrtc:13869
Change-Id: I6004fa96278263d0d25a1446d7bb8de41a563433
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/256682
Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@google.com>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36353}
diff --git a/p2p/base/fake_port_allocator.h b/p2p/base/fake_port_allocator.h
index 6366ea8..e3a239a 100644
--- a/p2p/base/fake_port_allocator.h
+++ b/p2p/base/fake_port_allocator.h
@@ -31,7 +31,7 @@
public:
static TestUDPPort* Create(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -50,7 +50,7 @@
protected:
TestUDPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/port.cc b/p2p/base/port.cc
index a061688..1aefe5f 100644
--- a/p2p/base/port.cc
+++ b/p2p/base/port.cc
@@ -108,7 +108,7 @@
Port::Port(rtc::Thread* thread,
const std::string& type,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
const std::string& username_fragment,
const std::string& password)
: thread_(thread),
@@ -135,7 +135,7 @@
Port::Port(rtc::Thread* thread,
const std::string& type,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username_fragment,
@@ -203,7 +203,7 @@
const std::string& Port::Type() const {
return type_;
}
-rtc::Network* Port::Network() const {
+const rtc::Network* Port::Network() const {
return network_;
}
diff --git a/p2p/base/port.h b/p2p/base/port.h
index 1ec82f7..ad4387d 100644
--- a/p2p/base/port.h
+++ b/p2p/base/port.h
@@ -183,13 +183,13 @@
Port(rtc::Thread* thread,
const std::string& type,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
const std::string& username_fragment,
const std::string& password);
Port(rtc::Thread* thread,
const std::string& type,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username_fragment,
@@ -202,7 +202,7 @@
// conflit in the value of the 2-tuple, make sure that the implementation that
// relies on this 2-tuple for RTTI is properly changed.
const std::string& Type() const override;
- rtc::Network* Network() const override;
+ const rtc::Network* Network() const override;
// Methods to set/get ICE role and tiebreaker values.
IceRole GetIceRole() const override;
@@ -457,7 +457,7 @@
rtc::PacketSocketFactory* const factory_;
std::string type_;
bool send_retransmit_count_attribute_;
- rtc::Network* network_;
+ const rtc::Network* network_;
uint16_t min_port_;
uint16_t max_port_;
std::string content_name_;
diff --git a/p2p/base/port_interface.h b/p2p/base/port_interface.h
index 73c8e36..02fd979 100644
--- a/p2p/base/port_interface.h
+++ b/p2p/base/port_interface.h
@@ -49,7 +49,7 @@
virtual ~PortInterface();
virtual const std::string& Type() const = 0;
- virtual rtc::Network* Network() const = 0;
+ virtual const rtc::Network* Network() const = 0;
// Methods to set/get ICE role and tiebreaker values.
virtual void SetIceRole(IceRole role) = 0;
diff --git a/p2p/base/port_unittest.cc b/p2p/base/port_unittest.cc
index c5a8959..f5eed7e 100644
--- a/p2p/base/port_unittest.cc
+++ b/p2p/base/port_unittest.cc
@@ -136,7 +136,7 @@
TestPort(rtc::Thread* thread,
const std::string& type,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username_fragment,
@@ -786,7 +786,7 @@
return port;
}
// Overload to create a test port given an rtc::Network directly.
- std::unique_ptr<TestPort> CreateTestPort(rtc::Network* network,
+ std::unique_ptr<TestPort> CreateTestPort(const rtc::Network* network,
const std::string& username,
const std::string& password) {
auto port = std::make_unique<TestPort>(&main_, "test", &socket_factory_,
@@ -2106,7 +2106,7 @@
rport->SetIceTiebreaker(kTiebreaker2);
uint16_t lnetwork_id = 9;
- lport->Network()->set_id(lnetwork_id);
+ test_network->set_id(lnetwork_id);
// Send a fake ping from lport to rport.
lport->PrepareAddress();
rport->PrepareAddress();
@@ -2127,7 +2127,7 @@
// Send a fake ping from rport to lport.
test_network->set_type(rtc::ADAPTER_TYPE_CELLULAR);
uint16_t rnetwork_id = 8;
- rport->Network()->set_id(rnetwork_id);
+ test_network->set_id(rnetwork_id);
Connection* rconn =
rport->CreateConnection(lport->Candidates()[0], Port::ORIGIN_MESSAGE);
rconn->Ping(0);
diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc
index 1ba6486..4fa42f7 100644
--- a/p2p/base/stun_port.cc
+++ b/p2p/base/stun_port.cc
@@ -153,7 +153,7 @@
UDPPort::UDPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
rtc::AsyncPacketSocket* socket,
const std::string& username,
const std::string& password,
@@ -169,7 +169,7 @@
UDPPort::UDPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -599,7 +599,7 @@
std::unique_ptr<StunPort> StunPort::Create(
rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -619,7 +619,7 @@
StunPort::StunPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/stun_port.h b/p2p/base/stun_port.h
index 394c133..99d22a6 100644
--- a/p2p/base/stun_port.h
+++ b/p2p/base/stun_port.h
@@ -35,7 +35,7 @@
static std::unique_ptr<UDPPort> Create(
rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
rtc::AsyncPacketSocket* socket,
const std::string& username,
const std::string& password,
@@ -55,7 +55,7 @@
static std::unique_ptr<UDPPort> Create(
rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -119,7 +119,7 @@
protected:
UDPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -128,7 +128,7 @@
UDPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
rtc::AsyncPacketSocket* socket,
const std::string& username,
const std::string& password,
@@ -264,7 +264,7 @@
static std::unique_ptr<StunPort> Create(
rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -277,7 +277,7 @@
protected:
StunPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/tcp_port.cc b/p2p/base/tcp_port.cc
index 445b0d0..52f74e7 100644
--- a/p2p/base/tcp_port.cc
+++ b/p2p/base/tcp_port.cc
@@ -86,7 +86,7 @@
TCPPort::TCPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/tcp_port.h b/p2p/base/tcp_port.h
index 07d483c..0635ed9 100644
--- a/p2p/base/tcp_port.h
+++ b/p2p/base/tcp_port.h
@@ -36,7 +36,7 @@
public:
static std::unique_ptr<TCPPort> Create(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
@@ -66,7 +66,7 @@
protected:
TCPPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/tcp_port_unittest.cc b/p2p/base/tcp_port_unittest.cc
index 9af934f..ce83c1d 100644
--- a/p2p/base/tcp_port_unittest.cc
+++ b/p2p/base/tcp_port_unittest.cc
@@ -85,7 +85,7 @@
username_, password_, true));
}
- std::unique_ptr<TCPPort> CreateTCPPort(rtc::Network* network) {
+ std::unique_ptr<TCPPort> CreateTCPPort(const rtc::Network* network) {
return std::unique_ptr<TCPPort>(TCPPort::Create(
&main_, &socket_factory_, network, 0, 0, username_, password_, true));
}
diff --git a/p2p/base/turn_port.cc b/p2p/base/turn_port.cc
index 3f5b95e..8320983 100644
--- a/p2p/base/turn_port.cc
+++ b/p2p/base/turn_port.cc
@@ -215,7 +215,7 @@
TurnPort::TurnPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
rtc::AsyncPacketSocket* socket,
const std::string& username,
const std::string& password,
@@ -248,7 +248,7 @@
TurnPort::TurnPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/turn_port.h b/p2p/base/turn_port.h
index 3328f2f..89e6bd6 100644
--- a/p2p/base/turn_port.h
+++ b/p2p/base/turn_port.h
@@ -205,7 +205,7 @@
protected:
TurnPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
rtc::AsyncPacketSocket* socket,
const std::string& username,
const std::string& password,
@@ -220,7 +220,7 @@
TurnPort(rtc::Thread* thread,
rtc::PacketSocketFactory* factory,
- rtc::Network* network,
+ const rtc::Network* network,
uint16_t min_port,
uint16_t max_port,
const std::string& username,
diff --git a/p2p/base/turn_port_unittest.cc b/p2p/base/turn_port_unittest.cc
index e713e2b..eca0b58 100644
--- a/p2p/base/turn_port_unittest.cc
+++ b/p2p/base/turn_port_unittest.cc
@@ -277,7 +277,7 @@
password, server_address);
}
- bool CreateTurnPortWithNetwork(rtc::Network* network,
+ bool CreateTurnPortWithNetwork(const rtc::Network* network,
const std::string& username,
const std::string& password,
const ProtocolAddress& server_address) {
@@ -288,7 +288,7 @@
// Version of CreateTurnPort that takes all possible parameters; all other
// helper methods call this, such that "SetIceRole" and "ConnectSignals" (and
// possibly other things in the future) only happen in one place.
- bool CreateTurnPortWithAllParams(rtc::Network* network,
+ bool CreateTurnPortWithAllParams(const rtc::Network* network,
const std::string& username,
const std::string& password,
const ProtocolAddress& server_address) {
diff --git a/p2p/client/basic_port_allocator.cc b/p2p/client/basic_port_allocator.cc
index 20032a9..6535ba5 100644
--- a/p2p/client/basic_port_allocator.cc
+++ b/p2p/client/basic_port_allocator.cc
@@ -88,16 +88,18 @@
}
struct NetworkFilter {
- using Predicate = std::function<bool(rtc::Network*)>;
+ using Predicate = std::function<bool(const rtc::Network*)>;
NetworkFilter(Predicate pred, const std::string& description)
- : predRemain([pred](rtc::Network* network) { return !pred(network); }),
+ : predRemain(
+ [pred](const rtc::Network* network) { return !pred(network); }),
description(description) {}
Predicate predRemain;
const std::string description;
};
using NetworkList = rtc::NetworkManager::NetworkList;
-void FilterNetworks(NetworkList* networks, NetworkFilter filter) {
+void FilterNetworks(std::vector<const rtc::Network*>* networks,
+ NetworkFilter filter) {
auto start_to_remove =
std::partition(networks->begin(), networks->end(), filter.predRemain);
if (start_to_remove == networks->end()) {
@@ -432,11 +434,11 @@
return state_ == SessionState::STOPPED;
}
-std::vector<rtc::Network*> BasicPortAllocatorSession::GetFailedNetworks() {
+std::vector<const rtc::Network*>
+BasicPortAllocatorSession::GetFailedNetworks() {
RTC_DCHECK_RUN_ON(network_thread_);
- std::vector<rtc::Network*> networks = GetNetworks();
-
+ std::vector<const rtc::Network*> networks = GetNetworks();
// A network interface may have both IPv4 and IPv6 networks. Only if
// neither of the networks has any connections, the network interface
// is considered failed and need to be regathered on.
@@ -450,7 +452,7 @@
networks.erase(
std::remove_if(networks.begin(), networks.end(),
- [networks_with_connection](rtc::Network* network) {
+ [networks_with_connection](const rtc::Network* network) {
// If a network does not have any connection, it is
// considered failed.
return networks_with_connection.find(network->name()) !=
@@ -464,7 +466,7 @@
RTC_DCHECK_RUN_ON(network_thread_);
// Find the list of networks that have no connection.
- std::vector<rtc::Network*> failed_networks = GetFailedNetworks();
+ std::vector<const rtc::Network*> failed_networks = GetFailedNetworks();
if (failed_networks.empty()) {
return;
}
@@ -487,7 +489,7 @@
}
void BasicPortAllocatorSession::Regather(
- const std::vector<rtc::Network*>& networks,
+ const std::vector<const rtc::Network*>& networks,
bool disable_equivalent_phases,
IceRegatheringReason reason) {
RTC_DCHECK_RUN_ON(network_thread_);
@@ -696,9 +698,9 @@
allocation_started_ = true;
}
-std::vector<rtc::Network*> BasicPortAllocatorSession::GetNetworks() {
+std::vector<const rtc::Network*> BasicPortAllocatorSession::GetNetworks() {
RTC_DCHECK_RUN_ON(network_thread_);
- std::vector<rtc::Network*> networks;
+ std::vector<const rtc::Network*> networks;
rtc::NetworkManager* network_manager = allocator_->network_manager();
RTC_DCHECK(network_manager != nullptr);
// If the network permission state is BLOCKED, we just act as if the flag has
@@ -712,35 +714,41 @@
// traffic by OS is also used here to avoid any local or public IP leakage
// during stun process.
if (flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) {
- network_manager->GetAnyAddressNetworks(&networks);
+ networks = network_manager->GetAnyAddressNetworks();
} else {
- network_manager->GetNetworks(&networks);
+ networks = network_manager->GetNetworks();
// If network enumeration fails, use the ANY address as a fallback, so we
// can at least try gathering candidates using the default route chosen by
// the OS. Or, if the PORTALLOCATOR_ENABLE_ANY_ADDRESS_PORTS flag is
// set, we'll use ANY address candidates either way.
- if (networks.empty() || flags() & PORTALLOCATOR_ENABLE_ANY_ADDRESS_PORTS) {
- network_manager->GetAnyAddressNetworks(&networks);
+ if (networks.empty() ||
+ (flags() & PORTALLOCATOR_ENABLE_ANY_ADDRESS_PORTS)) {
+ std::vector<const rtc::Network*> any_address_networks =
+ network_manager->GetAnyAddressNetworks();
+ networks.insert(networks.end(), any_address_networks.begin(),
+ any_address_networks.end());
}
}
// Filter out link-local networks if needed.
if (flags() & PORTALLOCATOR_DISABLE_LINK_LOCAL_NETWORKS) {
NetworkFilter link_local_filter(
- [](rtc::Network* network) { return IPIsLinkLocal(network->prefix()); },
+ [](const rtc::Network* network) {
+ return IPIsLinkLocal(network->prefix());
+ },
"link-local");
FilterNetworks(&networks, link_local_filter);
}
// Do some more filtering, depending on the network ignore mask and "disable
// costly networks" flag.
NetworkFilter ignored_filter(
- [this](rtc::Network* network) {
+ [this](const rtc::Network* network) {
return allocator_->GetNetworkIgnoreMask() & network->type();
},
"ignored");
FilterNetworks(&networks, ignored_filter);
if (flags() & PORTALLOCATOR_DISABLE_COSTLY_NETWORKS) {
uint16_t lowest_cost = rtc::kNetworkCostMax;
- for (rtc::Network* network : networks) {
+ for (const rtc::Network* network : networks) {
// Don't determine the lowest cost from a link-local network.
// On iOS, a device connected to the computer will get a link-local
// network for communicating with the computer, however this network can't
@@ -751,7 +759,7 @@
lowest_cost = std::min<uint16_t>(lowest_cost, network->GetCost());
}
NetworkFilter costly_filter(
- [lowest_cost](rtc::Network* network) {
+ [lowest_cost](const rtc::Network* network) {
return network->GetCost() > lowest_cost + rtc::kNetworkCostLow;
},
"costly");
@@ -786,7 +794,7 @@
void BasicPortAllocatorSession::DoAllocate(bool disable_equivalent) {
RTC_DCHECK_RUN_ON(network_thread_);
bool done_signal_needed = false;
- std::vector<rtc::Network*> networks = GetNetworks();
+ std::vector<const rtc::Network*> networks = GetNetworks();
if (networks.empty()) {
RTC_LOG(LS_WARNING)
<< "Machine has no networks; no ports will be allocated";
@@ -853,8 +861,8 @@
void BasicPortAllocatorSession::OnNetworksChanged() {
RTC_DCHECK_RUN_ON(network_thread_);
- std::vector<rtc::Network*> networks = GetNetworks();
- std::vector<rtc::Network*> failed_networks;
+ std::vector<const rtc::Network*> networks = GetNetworks();
+ std::vector<const rtc::Network*> failed_networks;
for (AllocationSequence* sequence : sequences_) {
// Mark the sequence as "network failed" if its network is not in
// `networks`.
@@ -887,7 +895,7 @@
}
void BasicPortAllocatorSession::DisableEquivalentPhases(
- rtc::Network* network,
+ const rtc::Network* network,
PortConfiguration* config,
uint32_t* flags) {
RTC_DCHECK_RUN_ON(network_thread_);
@@ -1200,7 +1208,7 @@
std::vector<BasicPortAllocatorSession::PortData*>
BasicPortAllocatorSession::GetUnprunedPorts(
- const std::vector<rtc::Network*>& networks) {
+ const std::vector<const rtc::Network*>& networks) {
RTC_DCHECK_RUN_ON(network_thread_);
std::vector<PortData*> unpruned_ports;
for (PortData& port : ports_) {
@@ -1247,7 +1255,7 @@
AllocationSequence::AllocationSequence(
BasicPortAllocatorSession* session,
- rtc::Network* network,
+ const rtc::Network* network,
PortConfiguration* config,
uint32_t flags,
std::function<void()> port_allocation_complete_callback)
@@ -1289,7 +1297,7 @@
Stop();
}
-void AllocationSequence::DisableEquivalentPhases(rtc::Network* network,
+void AllocationSequence::DisableEquivalentPhases(const rtc::Network* network,
PortConfiguration* config,
uint32_t* flags) {
if (network_failed_) {
diff --git a/p2p/client/basic_port_allocator.h b/p2p/client/basic_port_allocator.h
index 946aa6b..6d650f5 100644
--- a/p2p/client/basic_port_allocator.h
+++ b/p2p/client/basic_port_allocator.h
@@ -236,7 +236,7 @@
void DoAllocate(bool disable_equivalent_phases);
void OnNetworksChanged();
void OnAllocationSequenceObjectsCreated();
- void DisableEquivalentPhases(rtc::Network* network,
+ void DisableEquivalentPhases(const rtc::Network* network,
PortConfiguration* config,
uint32_t* flags);
void AddAllocatedPort(Port* port, AllocationSequence* seq);
@@ -249,9 +249,9 @@
void MaybeSignalCandidatesAllocationDone();
void OnPortAllocationComplete();
PortData* FindPort(Port* port);
- std::vector<rtc::Network*> GetNetworks();
- std::vector<rtc::Network*> GetFailedNetworks();
- void Regather(const std::vector<rtc::Network*>& networks,
+ std::vector<const rtc::Network*> GetNetworks();
+ std::vector<const rtc::Network*> GetFailedNetworks();
+ void Regather(const std::vector<const rtc::Network*>& networks,
bool disable_equivalent_phases,
IceRegatheringReason reason);
@@ -259,7 +259,7 @@
bool CandidatePairable(const Candidate& c, const Port* port) const;
std::vector<PortData*> GetUnprunedPorts(
- const std::vector<rtc::Network*>& networks);
+ const std::vector<const rtc::Network*>& networks);
// Prunes ports and signal the remote side to remove the candidates that
// were previously signaled from these ports.
void PrunePortsAndRemoveCandidates(
@@ -352,7 +352,7 @@
// event to trigger signal. This can also be achieved by starting a timer in
// BPAS, but this is less deterministic.
AllocationSequence(BasicPortAllocatorSession* session,
- rtc::Network* network,
+ const rtc::Network* network,
PortConfiguration* config,
uint32_t flags,
std::function<void()> port_allocation_complete_callback);
@@ -361,14 +361,14 @@
void OnNetworkFailed();
State state() const { return state_; }
- rtc::Network* network() const { return network_; }
+ const rtc::Network* network() const { return network_; }
bool network_failed() const { return network_failed_; }
void set_network_failed() { network_failed_ = true; }
// Disables the phases for a new sequence that this one already covers for an
// equivalent network setup.
- void DisableEquivalentPhases(rtc::Network* network,
+ void DisableEquivalentPhases(const rtc::Network* network,
PortConfiguration* config,
uint32_t* flags);
@@ -401,7 +401,7 @@
BasicPortAllocatorSession* session_;
bool network_failed_ = false;
- rtc::Network* network_;
+ const rtc::Network* network_;
// Compared with the new best IP in DisableEquivalentPhases.
rtc::IPAddress previous_best_ip_;
PortConfiguration* config_;
diff --git a/p2p/client/relay_port_factory_interface.h b/p2p/client/relay_port_factory_interface.h
index 9417c4d..7d63fac 100644
--- a/p2p/client/relay_port_factory_interface.h
+++ b/p2p/client/relay_port_factory_interface.h
@@ -38,7 +38,7 @@
struct CreateRelayPortArgs {
rtc::Thread* network_thread;
rtc::PacketSocketFactory* socket_factory;
- rtc::Network* network;
+ const rtc::Network* network;
const ProtocolAddress* server_address;
const RelayServerConfig* config;
std::string username;
diff --git a/rtc_base/nat_unittest.cc b/rtc_base/nat_unittest.cc
index 2e41684..af6256fb 100644
--- a/rtc_base/nat_unittest.cc
+++ b/rtc_base/nat_unittest.cc
@@ -228,7 +228,7 @@
std::vector<Network*> networks;
network_manager.GetNetworks(&networks);
networks.erase(std::remove_if(networks.begin(), networks.end(),
- [](rtc::Network* network) {
+ [](const rtc::Network* network) {
return rtc::kDefaultNetworkIgnoreMask &
network->type();
}),
diff --git a/rtc_base/network.h b/rtc_base/network.h
index bf14bef..063e255 100644
--- a/rtc_base/network.h
+++ b/rtc_base/network.h
@@ -149,6 +149,15 @@
// It makes sure that repeated calls return the same object for a
// given network, so that quality is tracked appropriately. Does not
// include ignored networks.
+ virtual std::vector<const Network*> GetNetworks() const {
+ std::vector<Network*> networks;
+ std::vector<const Network*> const_networks;
+ GetNetworks(&networks);
+ const_networks.insert(const_networks.begin(), networks.begin(),
+ networks.end());
+ return const_networks;
+ }
+ // TODO(bugs.webrtc.org/13869): Delete this overload.
virtual void GetNetworks(NetworkList* networks) const = 0;
// Returns the current permission state of GetNetworks().
@@ -163,6 +172,15 @@
// can optionally be called after GetNetworks.
//
// TODO(guoweis): remove this body when chromium implements this.
+ virtual std::vector<const Network*> GetAnyAddressNetworks() {
+ std::vector<Network*> networks;
+ std::vector<const Network*> const_networks;
+ GetAnyAddressNetworks(&networks);
+ const_networks.insert(const_networks.begin(), networks.begin(),
+ networks.end());
+ return const_networks;
+ }
+ // TODO(bugs.webrtc.org/13869): Delete this overload.
virtual void GetAnyAddressNetworks(NetworkList* networks) {}
// Dumps the current list of networks in the network manager.
@@ -365,12 +383,14 @@
~Network();
// This signal is fired whenever type() or underlying_type_for_vpn() changes.
- sigslot::signal1<const Network*> SignalTypeChanged;
+ // Mutable, to support connecting on the const Network passed to cricket::Port
+ // constructor.
+ mutable sigslot::signal1<const Network*> SignalTypeChanged;
// This signal is fired whenever network preference changes.
sigslot::signal1<const Network*> SignalNetworkPreferenceChanged;
- const DefaultLocalAddressProvider* default_local_address_provider() {
+ const DefaultLocalAddressProvider* default_local_address_provider() const {
return default_local_address_provider_;
}
void set_default_local_address_provider(