From 8e5ec52e76dd3dd352ef05f7498fba9d06244afe Mon Sep 17 00:00:00 2001 From: "buildbot@webrtc.org" Date: Sat, 19 Apr 2014 00:00:31 +0000 Subject: [PATCH] (Auto)update libjingle 65152644-> 65219629 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5941 4adac7df-926f-26a2-2b94-8c16560cd09d --- talk/p2p/base/turnport.cc | 9 +++++--- talk/p2p/client/basicportallocator.cc | 2 +- talk/p2p/client/portallocator_unittest.cc | 27 +++++++++++++++++++++++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/talk/p2p/base/turnport.cc b/talk/p2p/base/turnport.cc index adcf96c87..a93755d19 100644 --- a/talk/p2p/base/turnport.cc +++ b/talk/p2p/base/turnport.cc @@ -442,16 +442,19 @@ void TurnPort::ResolveTurnAddress(const talk_base::SocketAddress& address) { void TurnPort::OnResolveResult(talk_base::AsyncResolverInterface* resolver) { ASSERT(resolver == resolver_); + talk_base::SocketAddress resolved_address; if (resolver_->GetError() != 0 || - !resolver_->GetResolvedAddress(ip().family(), &server_address_.address)) { + !resolver_->GetResolvedAddress(ip().family(), &resolved_address)) { LOG_J(LS_WARNING, this) << "TURN host lookup received error " << resolver_->GetError(); OnAllocateError(); return; } - + // Signal needs both resolved and unresolved address. After signal is sent + // we can copy resolved address back into |server_address_|. SignalResolvedServerAddress(this, server_address_.address, - resolver_->address()); + resolved_address); + server_address_.address = resolved_address; PrepareAddress(); } diff --git a/talk/p2p/client/basicportallocator.cc b/talk/p2p/client/basicportallocator.cc index ea8a59adf..ef67e3010 100644 --- a/talk/p2p/client/basicportallocator.cc +++ b/talk/p2p/client/basicportallocator.cc @@ -1083,7 +1083,7 @@ void AllocationSequence::OnResolvedTurnServerAddress( iter = turn_ports_.find(server_address); ASSERT(iter != turn_ports_.end()); - ASSERT(iter->second != port); + ASSERT(iter->second == port); // Remove old entry and then insert using the resolved address as key. turn_ports_.erase(iter); turn_ports_[resolved_server_address] = port; diff --git a/talk/p2p/client/portallocator_unittest.cc b/talk/p2p/client/portallocator_unittest.cc index 693d54702..1f027e869 100644 --- a/talk/p2p/client/portallocator_unittest.cc +++ b/talk/p2p/client/portallocator_unittest.cc @@ -739,6 +739,33 @@ TEST_F(PortAllocatorTest, TestSharedSocketWithoutNatUsingTurn) { EXPECT_EQ(3U, candidates_.size()); } +// Testing DNS resolve for the TURN server, this will test AllocationSequence +// handling the unresolved address signal from TurnPort. +TEST_F(PortAllocatorTest, TestSharedSocketWithServerAddressResolve) { + turn_server_.AddInternalSocket(talk_base::SocketAddress("127.0.0.1", 3478), + cricket::PROTO_UDP); + AddInterface(kClientAddr); + allocator_.reset(new cricket::BasicPortAllocator(&network_manager_)); + cricket::RelayServerConfig relay_server(cricket::RELAY_TURN); + cricket::RelayCredentials credentials(kTurnUsername, kTurnPassword); + relay_server.credentials = credentials; + relay_server.ports.push_back(cricket::ProtocolAddress( + talk_base::SocketAddress("localhost", 3478), + cricket::PROTO_UDP, false)); + allocator_->AddRelay(relay_server); + + allocator_->set_step_delay(cricket::kMinimumStepDelay); + allocator_->set_flags(allocator().flags() | + cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG | + cricket::PORTALLOCATOR_ENABLE_SHARED_SOCKET | + cricket::PORTALLOCATOR_DISABLE_TCP); + + EXPECT_TRUE(CreateSession(cricket::ICE_CANDIDATE_COMPONENT_RTP)); + session_->StartGettingPorts(); + + EXPECT_EQ_WAIT(2U, ports_.size(), kDefaultAllocationTimeout); +} + // Test that when PORTALLOCATOR_ENABLE_SHARED_SOCKET is enabled only one port // is allocated for udp/stun/turn. In this test we should expect all local, // stun and turn candidates.