summaryrefslogtreecommitdiff
path: root/p2p
diff options
context:
space:
mode:
authorbuildbot@webrtc.org <buildbot@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-04-19 00:00:31 +0000
committerbuildbot@webrtc.org <buildbot@webrtc.org@4adac7df-926f-26a2-2b94-8c16560cd09d>2014-04-19 00:00:31 +0000
commit96e0526e1b4d0774b89a41f3ae61d302c781d4d7 (patch)
tree023baa8ef9b0405eddfcc0332eb9a8c8d4f88088 /p2p
parent7c39938c083c801d3bea4b4ab043495b38eb46d4 (diff)
downloadtalk-96e0526e1b4d0774b89a41f3ae61d302c781d4d7.tar.gz
(Auto)update libjingle 65152644-> 65219629
git-svn-id: http://webrtc.googlecode.com/svn/trunk/talk@5941 4adac7df-926f-26a2-2b94-8c16560cd09d
Diffstat (limited to 'p2p')
-rw-r--r--p2p/base/turnport.cc9
-rw-r--r--p2p/client/basicportallocator.cc2
-rw-r--r--p2p/client/portallocator_unittest.cc27
3 files changed, 34 insertions, 4 deletions
diff --git a/p2p/base/turnport.cc b/p2p/base/turnport.cc
index adcf96c..a93755d 100644
--- a/p2p/base/turnport.cc
+++ b/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/p2p/client/basicportallocator.cc b/p2p/client/basicportallocator.cc
index ea8a59a..ef67e30 100644
--- a/p2p/client/basicportallocator.cc
+++ b/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/p2p/client/portallocator_unittest.cc b/p2p/client/portallocator_unittest.cc
index 693d547..1f027e8 100644
--- a/p2p/client/portallocator_unittest.cc
+++ b/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.