Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / libjingle / source / talk / app / webrtc / portallocatorfactory.cc
index decd33c..946f8ad 100644 (file)
 
 #include "talk/app/webrtc/portallocatorfactory.h"
 
-#include "talk/base/logging.h"
-#include "talk/base/network.h"
-#include "talk/base/thread.h"
 #include "talk/p2p/base/basicpacketsocketfactory.h"
 #include "talk/p2p/client/basicportallocator.h"
+#include "webrtc/base/logging.h"
+#include "webrtc/base/network.h"
+#include "webrtc/base/thread.h"
 
 namespace webrtc {
 
-using talk_base::scoped_ptr;
+using rtc::scoped_ptr;
 
-talk_base::scoped_refptr<PortAllocatorFactoryInterface>
+rtc::scoped_refptr<PortAllocatorFactoryInterface>
 PortAllocatorFactory::Create(
-    talk_base::Thread* worker_thread) {
-  talk_base::RefCountedObject<PortAllocatorFactory>* allocator =
-        new talk_base::RefCountedObject<PortAllocatorFactory>(worker_thread);
+    rtc::Thread* worker_thread) {
+  rtc::RefCountedObject<PortAllocatorFactory>* allocator =
+        new rtc::RefCountedObject<PortAllocatorFactory>(worker_thread);
   return allocator;
 }
 
-PortAllocatorFactory::PortAllocatorFactory(talk_base::Thread* worker_thread)
-    : network_manager_(new talk_base::BasicNetworkManager()),
-      socket_factory_(new talk_base::BasicPacketSocketFactory(worker_thread)) {
+PortAllocatorFactory::PortAllocatorFactory(rtc::Thread* worker_thread)
+    : network_manager_(new rtc::BasicNetworkManager()),
+      socket_factory_(new rtc::BasicPacketSocketFactory(worker_thread)) {
 }
 
 PortAllocatorFactory::~PortAllocatorFactory() {}
@@ -55,19 +55,15 @@ PortAllocatorFactory::~PortAllocatorFactory() {}
 cricket::PortAllocator* PortAllocatorFactory::CreatePortAllocator(
     const std::vector<StunConfiguration>& stun,
     const std::vector<TurnConfiguration>& turn) {
-  std::vector<talk_base::SocketAddress> stun_hosts;
+  cricket::ServerAddresses stun_hosts;
   typedef std::vector<StunConfiguration>::const_iterator StunIt;
   for (StunIt stun_it = stun.begin(); stun_it != stun.end(); ++stun_it) {
-    stun_hosts.push_back(stun_it->server);
+    stun_hosts.insert(stun_it->server);
   }
 
-  talk_base::SocketAddress stun_addr;
-  if (!stun_hosts.empty()) {
-    stun_addr = stun_hosts.front();
-  }
   scoped_ptr<cricket::BasicPortAllocator> allocator(
       new cricket::BasicPortAllocator(
-          network_manager_.get(), socket_factory_.get(), stun_addr));
+          network_manager_.get(), socket_factory_.get(), stun_hosts));
 
   for (size_t i = 0; i < turn.size(); ++i) {
     cricket::RelayCredentials credentials(turn[i].username, turn[i].password);
@@ -77,6 +73,8 @@ cricket::PortAllocator* PortAllocatorFactory::CreatePortAllocator(
       relay_server.ports.push_back(cricket::ProtocolAddress(
           turn[i].server, protocol, turn[i].secure));
       relay_server.credentials = credentials;
+      // First in the list gets highest priority.
+      relay_server.priority = static_cast<int>(turn.size() - i - 1);
       allocator->AddRelay(relay_server);
     } else {
       LOG(LS_WARNING) << "Ignoring TURN server " << turn[i].server << ". "