| 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) { | 
|  |