Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: webrtc/p2p/base/fakeportallocator.h

Issue 2395243005: Prune connections based on network name. (Closed)
Patch Set: Override system-provided HasIPv6Enabled method Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webrtc/p2p/base/p2ptransportchannel.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/base/fakeportallocator.h
diff --git a/webrtc/p2p/base/fakeportallocator.h b/webrtc/p2p/base/fakeportallocator.h
index a1dbbf872b152748588ecd6b8727c5fc7c341305..a4d6fcfa5216043c565c51f80a2e7644be90889f 100644
--- a/webrtc/p2p/base/fakeportallocator.h
+++ b/webrtc/p2p/base/fakeportallocator.h
@@ -94,7 +94,8 @@ class FakePortAllocatorSession : public PortAllocatorSession {
const std::string& content_name,
int component,
const std::string& ice_ufrag,
- const std::string& ice_pwd)
+ const std::string& ice_pwd,
+ bool ipv6_enabled)
: PortAllocatorSession(content_name,
component,
ice_ufrag,
@@ -110,10 +111,10 @@ class FakePortAllocatorSession : public PortAllocatorSession {
"unittest",
rtc::IPAddress(in6addr_loopback),
64),
- port_(),
port_config_count_(0),
stun_servers_(allocator->stun_servers()),
- turn_servers_(allocator->turn_servers()) {
+ turn_servers_(allocator->turn_servers()),
+ ipv6_enabled_(ipv6_enabled) {
ipv4_network_.AddIP(rtc::IPAddress(INADDR_LOOPBACK));
ipv6_network_.AddIP(rtc::IPAddress(in6addr_loopback));
}
@@ -122,18 +123,20 @@ class FakePortAllocatorSession : public PortAllocatorSession {
candidate_filter_ = filter;
}
+ Port* CreatePort(rtc::Network* network) {
+ Port* port = TestUDPPort::Create(network_thread_, factory_, network,
+ network->GetBestIP(), 0, 0, username(),
+ password(), std::string(), false);
+ AddPort(port);
+ return port;
+ }
+
void StartGettingPorts() override {
- if (!port_) {
- rtc::Network& network =
- (rtc::HasIPv6Enabled() && (flags() & PORTALLOCATOR_ENABLE_IPV6))
- ? ipv6_network_
- : ipv4_network_;
- port_.reset(TestUDPPort::Create(network_thread_, factory_, &network,
- network.GetBestIP(), 0, 0, username(),
- password(), std::string(), false));
- port_->SignalDestroyed.connect(
- this, &FakePortAllocatorSession::OnPortDestroyed);
- AddPort(port_.get());
+ if (!ipv4_port_) {
+ ipv4_port_.reset(CreatePort(&ipv4_network_));
+ }
+ if (!ipv6_port_ && ipv6_enabled_ && (flags() & PORTALLOCATOR_ENABLE_IPV6)) {
+ ipv6_port_.reset(CreatePort(&ipv6_network_));
}
++port_config_count_;
running_ = true;
@@ -149,7 +152,14 @@ class FakePortAllocatorSession : public PortAllocatorSession {
std::vector<Candidate> ReadyCandidates() const override {
return candidates_;
}
- void PruneAllPorts() override { port_->Prune(); }
+ void PruneAllPorts() override {
+ if (ipv4_port_) {
+ ipv4_port_->Prune();
+ }
+ if (ipv6_port_) {
+ ipv6_port_->Prune();
+ }
+ }
bool CandidatesAllocationDone() const override { return allocation_done_; }
int port_config_count() { return port_config_count_; }
@@ -179,6 +189,8 @@ class FakePortAllocatorSession : public PortAllocatorSession {
port->set_generation(generation());
port->SignalPortComplete.connect(this,
&FakePortAllocatorSession::OnPortComplete);
+ port->SignalDestroyed.connect(this,
+ &FakePortAllocatorSession::OnPortDestroyed);
port->PrepareAddress();
ready_ports_.push_back(port);
SignalPortReady(this, port);
@@ -194,14 +206,19 @@ class FakePortAllocatorSession : public PortAllocatorSession {
}
void OnPortDestroyed(cricket::PortInterface* port) {
// Don't want to double-delete port if it deletes itself.
- port_.release();
+ if (port == ipv4_port_.get()) {
+ ipv4_port_.release();
+ } else if (port == ipv6_port_.get()) {
+ ipv6_port_.release();
+ }
}
rtc::Thread* network_thread_;
rtc::PacketSocketFactory* factory_;
rtc::Network ipv4_network_;
rtc::Network ipv6_network_;
- std::unique_ptr<cricket::Port> port_;
+ std::unique_ptr<cricket::Port> ipv4_port_;
+ std::unique_ptr<cricket::Port> ipv6_port_;
int port_config_count_;
std::vector<Candidate> candidates_;
std::vector<PortInterface*> ready_ports_;
@@ -210,6 +227,7 @@ class FakePortAllocatorSession : public PortAllocatorSession {
std::vector<RelayServerConfig> turn_servers_;
uint32_t candidate_filter_ = CF_ALL;
int transport_info_update_count_ = 0;
+ bool ipv6_enabled_;
bool running_ = false;
};
@@ -222,6 +240,7 @@ class FakePortAllocator : public cricket::PortAllocator {
owned_factory_.reset(new rtc::BasicPacketSocketFactory(network_thread_));
factory_ = owned_factory_.get();
}
+ ipv6_enabled_ = rtc::HasIPv6Enabled();
}
void Initialize() override {
@@ -232,6 +251,10 @@ class FakePortAllocator : public cricket::PortAllocator {
void SetNetworkIgnoreMask(int network_ignore_mask) override {}
+ // Sometimes we can ignore the value returned by rtc::HasIpv6Enabled because
+ // we are using the virtual socket server.
+ void set_ipv6_enabled(bool ipv6_enabled) { ipv6_enabled_ = ipv6_enabled; }
+
cricket::PortAllocatorSession* CreateSessionInternal(
const std::string& content_name,
int component,
@@ -239,7 +262,7 @@ class FakePortAllocator : public cricket::PortAllocator {
const std::string& ice_pwd) override {
return new FakePortAllocatorSession(this, network_thread_, factory_,
content_name, component, ice_ufrag,
- ice_pwd);
+ ice_pwd, ipv6_enabled_);
}
bool initialized() const { return initialized_; }
@@ -249,6 +272,7 @@ class FakePortAllocator : public cricket::PortAllocator {
rtc::PacketSocketFactory* factory_;
std::unique_ptr<rtc::BasicPacketSocketFactory> owned_factory_;
bool initialized_ = false;
+ bool ipv6_enabled_ = false;
};
} // namespace cricket
« no previous file with comments | « no previous file | webrtc/p2p/base/p2ptransportchannel.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698