diff options
Diffstat (limited to 'webrtc/p2p/client/basicportallocator.cc')
-rw-r--r-- | webrtc/p2p/client/basicportallocator.cc | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/webrtc/p2p/client/basicportallocator.cc b/webrtc/p2p/client/basicportallocator.cc index 21c8921f40..e45d2c8f0f 100644 --- a/webrtc/p2p/client/basicportallocator.cc +++ b/webrtc/p2p/client/basicportallocator.cc @@ -10,6 +10,7 @@ #include "webrtc/p2p/client/basicportallocator.h" +#include <algorithm> #include <string> #include <vector> @@ -70,15 +71,16 @@ BasicPortAllocator::BasicPortAllocator( : network_manager_(network_manager), socket_factory_(socket_factory), stun_servers_() { - ASSERT(socket_factory_ != NULL); + ASSERT(network_manager_ != nullptr); + ASSERT(socket_factory_ != nullptr); Construct(); } -BasicPortAllocator::BasicPortAllocator( - rtc::NetworkManager* network_manager) +BasicPortAllocator::BasicPortAllocator(rtc::NetworkManager* network_manager) : network_manager_(network_manager), - socket_factory_(NULL), + socket_factory_(nullptr), stun_servers_() { + ASSERT(network_manager_ != nullptr); Construct(); } @@ -104,15 +106,19 @@ BasicPortAllocator::BasicPortAllocator( stun_servers_(stun_servers) { RelayServerConfig config(RELAY_GTURN); - if (!relay_address_udp.IsNil()) + if (!relay_address_udp.IsNil()) { config.ports.push_back(ProtocolAddress(relay_address_udp, PROTO_UDP)); - if (!relay_address_tcp.IsNil()) + } + if (!relay_address_tcp.IsNil()) { config.ports.push_back(ProtocolAddress(relay_address_tcp, PROTO_TCP)); - if (!relay_address_ssl.IsNil()) + } + if (!relay_address_ssl.IsNil()) { config.ports.push_back(ProtocolAddress(relay_address_ssl, PROTO_SSLTCP)); + } - if (!config.ports.empty()) - AddRelay(config); + if (!config.ports.empty()) { + AddTurnServer(config); + } Construct(); } @@ -241,8 +247,8 @@ void BasicPortAllocatorSession::GetPortConfigurations() { username(), password()); - for (size_t i = 0; i < allocator_->relays().size(); ++i) { - config->AddRelay(allocator_->relays()[i]); + for (const RelayServerConfig& turn_server : allocator_->turn_servers()) { + config->AddRelay(turn_server); } ConfigReady(config); } @@ -253,8 +259,9 @@ void BasicPortAllocatorSession::ConfigReady(PortConfiguration* config) { // Adds a configuration to the list. void BasicPortAllocatorSession::OnConfigReady(PortConfiguration* config) { - if (config) + if (config) { configs_.push_back(config); + } AllocatePorts(); } @@ -322,6 +329,12 @@ void BasicPortAllocatorSession::GetNetworks( } else { network_manager->GetNetworks(networks); } + networks->erase(std::remove_if(networks->begin(), networks->end(), + [this](rtc::Network* network) { + return allocator_->network_ignore_mask() & + network->type(); + }), + networks->end()); } // For each network, see if we have a sequence that covers it already. If not, @@ -436,7 +449,8 @@ void BasicPortAllocatorSession::AddAllocatedPort(Port* port, // When adapter enumeration is disabled, disable CF_HOST at port level so // local address is not leaked by stunport in the candidate's related address. - if (flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) { + if ((flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) && + (flags() & PORTALLOCATOR_DISABLE_DEFAULT_LOCAL_CANDIDATE)) { candidate_filter &= ~CF_HOST; } port->set_candidate_filter(candidate_filter); @@ -600,25 +614,6 @@ bool BasicPortAllocatorSession::CheckCandidateFilter(const Candidate& c) { return true; } - // If PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE is specified and it's - // loopback address, we should allow it as it's for demo page connectivity - // when no TURN/STUN specified. - if (c.address().IsLoopbackIP() && - (flags() & PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE) != 0) { - return true; - } - - // This is just to prevent the case when binding to any address (all 0s), if - // somehow the host candidate address is not all 0s. Either because local - // installed proxy changes the address or a packet has been sent for any - // reason before getsockname is called. - if (flags() & PORTALLOCATOR_DISABLE_ADAPTER_ENUMERATION) { - LOG(LS_WARNING) << "Received non-0 host address: " - << c.address().ToString() - << " when adapter enumeration is disabled"; - return false; - } - return ((filter & CF_HOST) != 0); } return false; @@ -882,19 +877,19 @@ void AllocationSequence::CreateUDPPorts() { // TODO(mallinath) - Remove UDPPort creating socket after shared socket // is enabled completely. UDPPort* port = NULL; - bool emit_localhost_for_anyaddress = - IsFlagSet(PORTALLOCATOR_ENABLE_LOCALHOST_CANDIDATE); + bool emit_local_candidate_for_anyaddress = + !IsFlagSet(PORTALLOCATOR_DISABLE_DEFAULT_LOCAL_CANDIDATE); if (IsFlagSet(PORTALLOCATOR_ENABLE_SHARED_SOCKET) && udp_socket_) { port = UDPPort::Create( session_->network_thread(), session_->socket_factory(), network_, udp_socket_.get(), session_->username(), session_->password(), - session_->allocator()->origin(), emit_localhost_for_anyaddress); + session_->allocator()->origin(), emit_local_candidate_for_anyaddress); } else { port = UDPPort::Create( session_->network_thread(), session_->socket_factory(), network_, ip_, session_->allocator()->min_port(), session_->allocator()->max_port(), session_->username(), session_->password(), - session_->allocator()->origin(), emit_localhost_for_anyaddress); + session_->allocator()->origin(), emit_local_candidate_for_anyaddress); } if (port) { |