diff --git a/p2p/base/stun_port.cc b/p2p/base/stun_port.cc index 7b1a2a83a2..e149c206b1 100644 --- a/p2p/base/stun_port.cc +++ b/p2p/base/stun_port.cc @@ -115,8 +115,10 @@ class StunBindingRequest : public StunRequest { int64_t start_time_; }; -UDPPort::AddressResolver::AddressResolver(rtc::PacketSocketFactory* factory) - : socket_factory_(factory) {} +UDPPort::AddressResolver::AddressResolver( + rtc::PacketSocketFactory* factory, + std::function done_callback) + : socket_factory_(factory), done_(std::move(done_callback)) {} UDPPort::AddressResolver::~AddressResolver() { for (ResolverMap::iterator it = resolvers_.begin(); it != resolvers_.end(); @@ -159,7 +161,7 @@ void UDPPort::AddressResolver::OnResolveResult( for (ResolverMap::iterator it = resolvers_.begin(); it != resolvers_.end(); ++it) { if (it->second == resolver) { - SignalDone(it->first, resolver->GetError()); + done_(it->first, resolver->GetError()); return; } } @@ -434,8 +436,10 @@ void UDPPort::SendStunBindingRequests() { void UDPPort::ResolveStunAddress(const rtc::SocketAddress& stun_addr) { if (!resolver_) { - resolver_.reset(new AddressResolver(socket_factory())); - resolver_->SignalDone.connect(this, &UDPPort::OnResolveResult); + resolver_.reset(new AddressResolver( + socket_factory(), [&](const rtc::SocketAddress& input, int error) { + OnResolveResult(input, error); + })); } RTC_LOG(LS_INFO) << ToString() << ": Starting STUN host lookup for " diff --git a/p2p/base/stun_port.h b/p2p/base/stun_port.h index aa57d666b9..45150ae6c6 100644 --- a/p2p/base/stun_port.h +++ b/p2p/base/stun_port.h @@ -11,6 +11,7 @@ #ifndef P2P_BASE_STUN_PORT_H_ #define P2P_BASE_STUN_PORT_H_ +#include #include #include #include @@ -20,8 +21,6 @@ #include "p2p/base/stun_request.h" #include "rtc_base/async_packet_socket.h" -// TODO(mallinath) - Rename stunport.cc|h to udpport.cc|h. - namespace cricket { // Lifetime chosen for STUN ports on low-cost networks. @@ -183,7 +182,9 @@ class UDPPort : public Port { // resolve one address per instance. class AddressResolver : public sigslot::has_slots<> { public: - explicit AddressResolver(rtc::PacketSocketFactory* factory); + explicit AddressResolver( + rtc::PacketSocketFactory* factory, + std::function done_callback); ~AddressResolver() override; void Resolve(const rtc::SocketAddress& address); @@ -191,11 +192,6 @@ class UDPPort : public Port { int family, rtc::SocketAddress* output) const; - // The signal is sent when resolving the specified address is finished. The - // first argument is the input address, the second argument is the error - // or 0 if it succeeded. - sigslot::signal2 SignalDone; - private: typedef std::map ResolverMap; @@ -204,6 +200,10 @@ class UDPPort : public Port { rtc::PacketSocketFactory* socket_factory_; ResolverMap resolvers_; + // The function is called when resolving the specified address is finished. + // The first argument is the input address, the second argument is the error + // or 0 if it succeeded. + std::function done_; }; // DNS resolution of the STUN server.