Index: remoting/client/plugin/pepper_port_allocator.cc |
diff --git a/remoting/client/plugin/pepper_port_allocator.cc b/remoting/client/plugin/pepper_port_allocator.cc |
index 5cceee1b9a2aa890a296310d0120fc37b78cdf4c..bcbb1b2a755e89ec80cef99a607a4aacaf94d904 100644 |
--- a/remoting/client/plugin/pepper_port_allocator.cc |
+++ b/remoting/client/plugin/pepper_port_allocator.cc |
@@ -8,8 +8,6 @@ |
#include "base/strings/string_number_conversions.h" |
#include "net/base/net_util.h" |
#include "ppapi/c/pp_errors.h" |
-#include "ppapi/cpp/host_resolver.h" |
-#include "ppapi/cpp/net_address.h" |
#include "ppapi/cpp/url_loader.h" |
#include "ppapi/cpp/url_request_info.h" |
#include "ppapi/cpp/url_response_info.h" |
@@ -47,16 +45,12 @@ class PepperPortAllocatorSession |
virtual void SendSessionRequest(const std::string& host, int port) OVERRIDE; |
private: |
- void ResolveStunServerAddress(); |
- void OnStunAddressResolved(int32_t result); |
- |
void OnUrlOpened(int32_t result); |
void ReadResponseBody(); |
void OnResponseBodyRead(int32_t result); |
pp::InstanceHandle instance_; |
- pp::HostResolver stun_address_resolver_; |
rtc::SocketAddress stun_address_; |
int stun_port_; |
@@ -89,7 +83,6 @@ PepperPortAllocatorSession::PepperPortAllocatorSession( |
relay_token, |
std::string()), |
instance_(instance), |
- stun_address_resolver_(instance_), |
stun_port_(0), |
relay_response_received_(false), |
callback_factory_(this) { |
@@ -103,16 +96,6 @@ PepperPortAllocatorSession::~PepperPortAllocatorSession() { |
void PepperPortAllocatorSession::ConfigReady( |
cricket::PortConfiguration* config) { |
- if (config->stun_address.IsUnresolved()) { |
- // Make sure that the address that we pass to ConfigReady() is |
- // always resolved. |
- if (stun_address_.IsUnresolved()) { |
- config->stun_address.Clear(); |
- } else { |
- config->stun_address = stun_address_; |
- } |
- } |
- |
// Filter out non-UDP relay ports, so that we don't try using TCP. |
for (cricket::PortConfiguration::RelayList::iterator relay = |
config->relays.begin(); relay != config->relays.end(); ++relay) { |
@@ -129,80 +112,14 @@ void PepperPortAllocatorSession::ConfigReady( |
} |
void PepperPortAllocatorSession::GetPortConfigurations() { |
- // Add an empty configuration synchronously, so a local connection |
- // can be started immediately. |
+ // Add a configuration without relay response first so local and STUN |
+ // candidates can be allocated without waiting for the relay response. |
ConfigReady(new cricket::PortConfiguration( |
- rtc::SocketAddress(), std::string(), std::string())); |
+ stun_address_, std::string(), std::string())); |
- ResolveStunServerAddress(); |
TryCreateRelaySession(); |
} |
-void PepperPortAllocatorSession::ResolveStunServerAddress() { |
- if (stun_address_.IsNil()) { |
- return; |
- } |
- |
- if (!stun_address_.IsUnresolved()) { |
- return; |
- } |
- |
- std::string hostname = stun_address_.hostname(); |
- uint16 port = stun_address_.port(); |
- |
- PP_HostResolver_Hint hint; |
- hint.flags = 0; |
- hint.family = PP_NETADDRESS_FAMILY_IPV4; |
- pp::CompletionCallback callback = callback_factory_.NewCallback( |
- &PepperPortAllocatorSession::OnStunAddressResolved); |
- int result = stun_address_resolver_.Resolve(hostname.c_str(), |
- port, |
- hint, |
- callback); |
- DCHECK_EQ(result, PP_OK_COMPLETIONPENDING); |
-} |
- |
-void PepperPortAllocatorSession::OnStunAddressResolved(int32_t result) { |
- if (result < 0) { |
- LOG(ERROR) << "Failed to resolve stun address " |
- << stun_address_.hostname() << ": " << result; |
- return; |
- } |
- |
- if (!stun_address_resolver_.GetNetAddressCount()) { |
- LOG(WARNING) << "Received 0 addresses for stun server " |
- << stun_address_.hostname(); |
- return; |
- } |
- |
- pp::NetAddress address = stun_address_resolver_.GetNetAddress(0); |
- if (address.is_null()) { |
- LOG(ERROR) << "Failed to get address for STUN server " |
- << stun_address_.hostname(); |
- return; |
- } |
- |
- PpNetAddressToSocketAddress(address, &stun_address_); |
- DCHECK(!stun_address_.IsUnresolved()); |
- |
- if (relay_response_received_) { |
- // If we've finished reading the response, then resubmit it to |
- // HttpPortAllocatorSessionBase. This is necessary because STUN |
- // and Relay parameters are stored together in PortConfiguration |
- // and ReceiveSessionResponse() doesn't save relay session |
- // configuration for the case we resolve STUN address later. This |
- // method invokes overriden ConfigReady() which then submits |
- // resolved |stun_address_|. |
- // |
- // TODO(sergeyu): Refactor HttpPortAllocatorSessionBase to fix this. |
- ReceiveSessionResponse(std::string(relay_response_body_.begin(), |
- relay_response_body_.end())); |
- } else { |
- ConfigReady(new cricket::PortConfiguration( |
- stun_address_, std::string(), std::string())); |
- } |
-} |
- |
void PepperPortAllocatorSession::SendSessionRequest( |
const std::string& host, |
int port) { |