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

Unified Diff: webrtc/p2p/base/stunport.cc

Issue 1299333003: Relanding Generate localhost candidate when no STUN/TURN and portallocator has the right flag spefi… (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 4 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 | « webrtc/p2p/base/stunport.h ('k') | webrtc/p2p/base/stunport_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/p2p/base/stunport.cc
diff --git a/webrtc/p2p/base/stunport.cc b/webrtc/p2p/base/stunport.cc
index 925bd8e9de308b672999ab6ef9c23c5fb0905ed2..696d323e64a790d66b6b48eb769bc5b62f9bc6d8 100644
--- a/webrtc/p2p/base/stunport.cc
+++ b/webrtc/p2p/base/stunport.cc
@@ -15,6 +15,7 @@
#include "webrtc/p2p/base/stun.h"
#include "webrtc/base/common.h"
#include "webrtc/base/helpers.h"
+#include "webrtc/base/ipaddress.h"
#include "webrtc/base/logging.h"
#include "webrtc/base/nethelpers.h"
@@ -164,14 +165,16 @@ UDPPort::UDPPort(rtc::Thread* thread,
rtc::AsyncPacketSocket* socket,
const std::string& username,
const std::string& password,
- const std::string& origin)
+ const std::string& origin,
+ bool emit_localhost_for_anyaddress)
: Port(thread, factory, network, socket->GetLocalAddress().ipaddr(),
username, password),
requests_(thread),
socket_(socket),
error_(0),
ready_(false),
- stun_keepalive_delay_(KEEPALIVE_DELAY) {
+ stun_keepalive_delay_(KEEPALIVE_DELAY),
+ emit_localhost_for_anyaddress_(emit_localhost_for_anyaddress) {
requests_.set_origin(origin);
}
@@ -183,14 +186,16 @@ UDPPort::UDPPort(rtc::Thread* thread,
uint16 max_port,
const std::string& username,
const std::string& password,
- const std::string& origin)
+ const std::string& origin,
+ bool emit_localhost_for_anyaddress)
: Port(thread, LOCAL_PORT_TYPE, factory, network, ip, min_port, max_port,
username, password),
requests_(thread),
socket_(NULL),
error_(0),
ready_(false),
- stun_keepalive_delay_(KEEPALIVE_DELAY) {
+ stun_keepalive_delay_(KEEPALIVE_DELAY),
+ emit_localhost_for_anyaddress_(emit_localhost_for_anyaddress) {
requests_.set_origin(origin);
}
@@ -280,7 +285,16 @@ int UDPPort::GetError() {
void UDPPort::OnLocalAddressReady(rtc::AsyncPacketSocket* socket,
const rtc::SocketAddress& address) {
- AddAddress(address, address, rtc::SocketAddress(), UDP_PROTOCOL_NAME, "", "",
+ // When adapter enumeration is disabled and binding to the any address, the
+ // loopback address will be issued as a candidate instead if
+ // |emit_localhost_for_anyaddress| is true. This is to allow connectivity on
+ // demo pages without STUN/TURN to work.
+ rtc::SocketAddress addr = address;
+ if (addr.IsAnyIP() && emit_localhost_for_anyaddress_) {
+ addr.SetIP(rtc::GetLoopbackIP(addr.family()));
+ }
+
+ AddAddress(addr, addr, rtc::SocketAddress(), UDP_PROTOCOL_NAME, "", "",
LOCAL_PORT_TYPE, ICE_TYPE_PREFERENCE_HOST, 0, false);
MaybePrepareStunCandidate();
}
« no previous file with comments | « webrtc/p2p/base/stunport.h ('k') | webrtc/p2p/base/stunport_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698