Index: webrtc/p2p/client/basicportallocator.cc |
diff --git a/webrtc/p2p/client/basicportallocator.cc b/webrtc/p2p/client/basicportallocator.cc |
index 90c2619e92695cd0e37c50623d0646aacb0a149a..70d1945d3d4f2190b46ddf256e0614e0e3e9083d 100644 |
--- a/webrtc/p2p/client/basicportallocator.cc |
+++ b/webrtc/p2p/client/basicportallocator.cc |
@@ -550,6 +550,13 @@ bool BasicPortAllocatorSession::CheckCandidateFilter(const Candidate& c) { |
return true; |
} |
+ // If it's loopback address, we should allow it as it's for demo page |
+ // connectivity when no TURN/STUN specified. |
+ if (c.address().IsLoopbackIP()) { |
+ ASSERT((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 |
@@ -820,20 +827,20 @@ 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) && |
+ config_->StunServers().empty() && config_->relays.empty(); |
pthatcher1
2015/08/07 21:59:49
Can we just check the flag here, and not check the
guoweis_webrtc
2015/08/13 15:08:52
Done.
|
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) { |