aboutsummaryrefslogtreecommitdiff
path: root/p2p/stunprober/stun_prober.cc
diff options
context:
space:
mode:
Diffstat (limited to 'p2p/stunprober/stun_prober.cc')
-rw-r--r--p2p/stunprober/stun_prober.cc26
1 files changed, 11 insertions, 15 deletions
diff --git a/p2p/stunprober/stun_prober.cc b/p2p/stunprober/stun_prober.cc
index 977ead4d72..f5abf43beb 100644
--- a/p2p/stunprober/stun_prober.cc
+++ b/p2p/stunprober/stun_prober.cc
@@ -329,13 +329,12 @@ bool StunProber::Start(StunProber::Observer* observer) {
}
bool StunProber::ResolveServerName(const rtc::SocketAddress& addr) {
- rtc::AsyncResolverInterface* resolver =
- socket_factory_->CreateAsyncResolver();
- if (!resolver) {
+ RTC_DCHECK(!resolver_);
+ resolver_ = socket_factory_->CreateAsyncDnsResolver();
+ if (!resolver_) {
return false;
}
- resolver->SignalDone.connect(this, &StunProber::OnServerResolved);
- resolver->Start(addr);
+ resolver_->Start(addr, [this] { OnServerResolved(resolver_->result()); });
return true;
}
@@ -347,20 +346,17 @@ void StunProber::OnSocketReady(rtc::AsyncPacketSocket* socket,
}
}
-void StunProber::OnServerResolved(rtc::AsyncResolverInterface* resolver) {
+void StunProber::OnServerResolved(
+ const webrtc::AsyncDnsResolverResult& result) {
RTC_DCHECK(thread_checker_.IsCurrent());
-
- if (resolver->GetError() == 0) {
- rtc::SocketAddress addr(resolver->address().ipaddr(),
- resolver->address().port());
+ rtc::SocketAddress received_address;
+ if (result.GetResolvedAddress(AF_INET, &received_address)) {
+ // Construct an address without the name in it.
+ rtc::SocketAddress addr(received_address.ipaddr(), received_address.port());
all_servers_addrs_.push_back(addr);
}
-
- // Deletion of AsyncResolverInterface can't be done in OnResolveResult which
- // handles SignalDone.
- thread_->PostTask([resolver] { resolver->Destroy(false); });
+ resolver_.reset();
servers_.pop_back();
-
if (servers_.size()) {
if (!ResolveServerName(servers_.back())) {
ReportOnPrepared(RESOLVE_FAILED);