Index: webrtc/p2p/client/basicportallocator.cc |
diff --git a/webrtc/p2p/client/basicportallocator.cc b/webrtc/p2p/client/basicportallocator.cc |
index 037db8f529306768956b19bf9da41fbcf7043ea8..f90c52164ccda049a4a873698f6c857b3524726b 100644 |
--- a/webrtc/p2p/client/basicportallocator.cc |
+++ b/webrtc/p2p/client/basicportallocator.cc |
@@ -562,6 +562,14 @@ 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 |
@@ -824,20 +832,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); |
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()); |
+ port = UDPPort::Create( |
+ session_->network_thread(), session_->socket_factory(), network_, |
+ udp_socket_.get(), session_->username(), session_->password(), |
+ session_->allocator()->origin(), emit_localhost_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()); |
+ 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); |
} |
if (port) { |