Disable remote ICE candidate DNS lookups when the IceTransportPolicy is Relay or None
Bug: webrtc:11597 Change-Id: Id3884a2b5f0fc35880c7401c43ca25fee8346519 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175960 Commit-Queue: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Harald Alvestrand <hta@webrtc.org> Reviewed-by: Qingsi Wang <qingsi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#31389}
This commit is contained in:
parent
2e69660b3e
commit
743b9b258c
1
AUTHORS
1
AUTHORS
@ -108,6 +108,7 @@ Opera Software ASA <*@opera.com>
|
||||
Optical Tone Ltd <*@opticaltone.com>
|
||||
Pengutronix e.K. <*@pengutronix.de>
|
||||
RingCentral, Inc. <*@ringcentral.com>
|
||||
Signal Messenger, LLC <*@signal.org>
|
||||
Sinch AB <*@sinch.com>
|
||||
struktur AG <*@struktur.de>
|
||||
Telenor Digital AS <*@telenor.com>
|
||||
|
||||
@ -1195,7 +1195,12 @@ void P2PTransportChannel::AddRemoteCandidate(const Candidate& candidate) {
|
||||
}
|
||||
|
||||
if (new_remote_candidate.address().IsUnresolvedIP()) {
|
||||
ResolveHostnameCandidate(new_remote_candidate);
|
||||
// Don't do DNS lookups if the IceTransportPolicy is "none" or "relay".
|
||||
bool sharing_host = ((allocator_->candidate_filter() & CF_HOST) != 0);
|
||||
bool sharing_stun = ((allocator_->candidate_filter() & CF_REFLEXIVE) != 0);
|
||||
if (sharing_host || sharing_stun) {
|
||||
ResolveHostnameCandidate(new_remote_candidate);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@ -5728,4 +5728,84 @@ TEST(P2PTransportChannel, InjectIceController) {
|
||||
/* event_log = */ nullptr, &factory);
|
||||
}
|
||||
|
||||
TEST_F(P2PTransportChannelTest, DisableDnsLookupsWithTransportPolicyRelay) {
|
||||
ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags,
|
||||
kDefaultPortAllocatorFlags);
|
||||
auto* ep1 = GetEndpoint(0);
|
||||
ep1->allocator_->SetCandidateFilter(CF_RELAY);
|
||||
|
||||
rtc::MockAsyncResolver mock_async_resolver;
|
||||
webrtc::MockAsyncResolverFactory mock_async_resolver_factory;
|
||||
ON_CALL(mock_async_resolver_factory, Create())
|
||||
.WillByDefault(Return(&mock_async_resolver));
|
||||
ep1->async_resolver_factory_ = &mock_async_resolver_factory;
|
||||
|
||||
bool lookup_started = false;
|
||||
ON_CALL(mock_async_resolver, Start(_))
|
||||
.WillByDefault(Assign(&lookup_started, true));
|
||||
|
||||
CreateChannels();
|
||||
|
||||
ep1_ch1()->AddRemoteCandidate(
|
||||
CreateUdpCandidate(LOCAL_PORT_TYPE, "hostname.test", 1, 100));
|
||||
|
||||
EXPECT_FALSE(lookup_started);
|
||||
|
||||
DestroyChannels();
|
||||
}
|
||||
|
||||
TEST_F(P2PTransportChannelTest, DisableDnsLookupsWithTransportPolicyNone) {
|
||||
ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags,
|
||||
kDefaultPortAllocatorFlags);
|
||||
auto* ep1 = GetEndpoint(0);
|
||||
ep1->allocator_->SetCandidateFilter(CF_NONE);
|
||||
|
||||
rtc::MockAsyncResolver mock_async_resolver;
|
||||
webrtc::MockAsyncResolverFactory mock_async_resolver_factory;
|
||||
ON_CALL(mock_async_resolver_factory, Create())
|
||||
.WillByDefault(Return(&mock_async_resolver));
|
||||
ep1->async_resolver_factory_ = &mock_async_resolver_factory;
|
||||
|
||||
bool lookup_started = false;
|
||||
ON_CALL(mock_async_resolver, Start(_))
|
||||
.WillByDefault(Assign(&lookup_started, true));
|
||||
|
||||
CreateChannels();
|
||||
|
||||
ep1_ch1()->AddRemoteCandidate(
|
||||
CreateUdpCandidate(LOCAL_PORT_TYPE, "hostname.test", 1, 100));
|
||||
|
||||
EXPECT_FALSE(lookup_started);
|
||||
|
||||
DestroyChannels();
|
||||
}
|
||||
|
||||
TEST_F(P2PTransportChannelTest, EnableDnsLookupsWithTransportPolicyNoHost) {
|
||||
ConfigureEndpoints(OPEN, OPEN, kDefaultPortAllocatorFlags,
|
||||
kDefaultPortAllocatorFlags);
|
||||
auto* ep1 = GetEndpoint(0);
|
||||
ep1->allocator_->SetCandidateFilter(CF_ALL & ~CF_HOST);
|
||||
|
||||
rtc::MockAsyncResolver mock_async_resolver;
|
||||
webrtc::MockAsyncResolverFactory mock_async_resolver_factory;
|
||||
EXPECT_CALL(mock_async_resolver_factory, Create())
|
||||
.WillOnce(Return(&mock_async_resolver));
|
||||
EXPECT_CALL(mock_async_resolver, Destroy(_));
|
||||
|
||||
ep1->async_resolver_factory_ = &mock_async_resolver_factory;
|
||||
|
||||
bool lookup_started = false;
|
||||
EXPECT_CALL(mock_async_resolver, Start(_))
|
||||
.WillOnce(Assign(&lookup_started, true));
|
||||
|
||||
CreateChannels();
|
||||
|
||||
ep1_ch1()->AddRemoteCandidate(
|
||||
CreateUdpCandidate(LOCAL_PORT_TYPE, "hostname.test", 1, 100));
|
||||
|
||||
EXPECT_TRUE(lookup_started);
|
||||
|
||||
DestroyChannels();
|
||||
}
|
||||
|
||||
} // namespace cricket
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user