Loading DnsResolver.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include "DnsProxyListener.h" #include "DnsResolverService.h" #include "DnsTlsDispatcher.h" #include "PrivateDnsConfiguration.h" #include "netd_resolv/resolv.h" #include "res_debug.h" #include "util.h" Loading Loading @@ -72,6 +74,14 @@ DnsResolver* DnsResolver::getInstance() { return &instance; } DnsResolver::DnsResolver() { // TODO: make them member variables after fixing the circular dependency: // DnsTlsDispatcher.h -> resolv_private.h -> DnsResolver.h -> DnsTlsDispatcher.h auto& dnsTlsDispatcher = DnsTlsDispatcher::getInstance(); auto& privateDnsConfiguration = PrivateDnsConfiguration::getInstance(); privateDnsConfiguration.setObserver(&dnsTlsDispatcher); } bool DnsResolver::start() { if (!verifyCallbacks()) { LOG(ERROR) << __func__ << ": Callback verification failed"; Loading DnsResolver.h +2 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,8 @@ class DnsResolver { ResolverController resolverCtrl; private: DnsResolver() {} DnsResolver(); DnsProxyListener mDnsProxyListener; DnsQueryLog mQueryLog; }; Loading DnsTlsDispatcher.h +5 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include "DnsTlsServer.h" #include "DnsTlsTransport.h" #include "IDnsTlsSocketFactory.h" #include "PrivateDnsValidationObserver.h" #include "resolv_private.h" namespace android { Loading @@ -35,7 +36,7 @@ namespace net { // This is a singleton class that manages the collection of active DnsTlsTransports. // Queries made here are dispatched to an existing or newly constructed DnsTlsTransport. class DnsTlsDispatcher { class DnsTlsDispatcher : public PrivateDnsValidationObserver { public: // Constructor with dependency injection for testing. explicit DnsTlsDispatcher(std::unique_ptr<IDnsTlsSocketFactory> factory) Loading @@ -60,6 +61,9 @@ class DnsTlsDispatcher { const netdutils::Slice query, const netdutils::Slice ans, int* _Nonnull resplen, bool* _Nonnull connectTriggered); // Implement PrivateDnsValidationObserver. void onValidationStateUpdate(const std::string&, Validation, uint32_t) override{}; private: DnsTlsDispatcher(); Loading PrivateDnsConfiguration.h +2 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ class PrivateDnsConfiguration { } }; void setObserver(PrivateDnsValidationObserver* observer); private: typedef std::map<ServerIdentity, DnsTlsServer> PrivateDnsTracker; typedef std::set<DnsTlsServer, AddressComparator> ThreadTracker; Loading Loading @@ -114,7 +116,6 @@ class PrivateDnsConfiguration { // Any pending validation threads will continue running because we have no way to cancel them. std::map<unsigned, PrivateDnsTracker> mPrivateDnsTransports GUARDED_BY(mPrivateDnsLock); void setObserver(PrivateDnsValidationObserver* observer); void notifyValidationStateUpdate(const std::string& serverIp, Validation validation, uint32_t netId) const REQUIRES(mPrivateDnsLock); Loading Loading
DnsResolver.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ #include "DnsProxyListener.h" #include "DnsResolverService.h" #include "DnsTlsDispatcher.h" #include "PrivateDnsConfiguration.h" #include "netd_resolv/resolv.h" #include "res_debug.h" #include "util.h" Loading Loading @@ -72,6 +74,14 @@ DnsResolver* DnsResolver::getInstance() { return &instance; } DnsResolver::DnsResolver() { // TODO: make them member variables after fixing the circular dependency: // DnsTlsDispatcher.h -> resolv_private.h -> DnsResolver.h -> DnsTlsDispatcher.h auto& dnsTlsDispatcher = DnsTlsDispatcher::getInstance(); auto& privateDnsConfiguration = PrivateDnsConfiguration::getInstance(); privateDnsConfiguration.setObserver(&dnsTlsDispatcher); } bool DnsResolver::start() { if (!verifyCallbacks()) { LOG(ERROR) << __func__ << ": Callback verification failed"; Loading
DnsResolver.h +2 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,8 @@ class DnsResolver { ResolverController resolverCtrl; private: DnsResolver() {} DnsResolver(); DnsProxyListener mDnsProxyListener; DnsQueryLog mQueryLog; }; Loading
DnsTlsDispatcher.h +5 −1 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ #include "DnsTlsServer.h" #include "DnsTlsTransport.h" #include "IDnsTlsSocketFactory.h" #include "PrivateDnsValidationObserver.h" #include "resolv_private.h" namespace android { Loading @@ -35,7 +36,7 @@ namespace net { // This is a singleton class that manages the collection of active DnsTlsTransports. // Queries made here are dispatched to an existing or newly constructed DnsTlsTransport. class DnsTlsDispatcher { class DnsTlsDispatcher : public PrivateDnsValidationObserver { public: // Constructor with dependency injection for testing. explicit DnsTlsDispatcher(std::unique_ptr<IDnsTlsSocketFactory> factory) Loading @@ -60,6 +61,9 @@ class DnsTlsDispatcher { const netdutils::Slice query, const netdutils::Slice ans, int* _Nonnull resplen, bool* _Nonnull connectTriggered); // Implement PrivateDnsValidationObserver. void onValidationStateUpdate(const std::string&, Validation, uint32_t) override{}; private: DnsTlsDispatcher(); Loading
PrivateDnsConfiguration.h +2 −1 Original line number Diff line number Diff line Loading @@ -86,6 +86,8 @@ class PrivateDnsConfiguration { } }; void setObserver(PrivateDnsValidationObserver* observer); private: typedef std::map<ServerIdentity, DnsTlsServer> PrivateDnsTracker; typedef std::set<DnsTlsServer, AddressComparator> ThreadTracker; Loading Loading @@ -114,7 +116,6 @@ class PrivateDnsConfiguration { // Any pending validation threads will continue running because we have no way to cancel them. std::map<unsigned, PrivateDnsTracker> mPrivateDnsTransports GUARDED_BY(mPrivateDnsLock); void setObserver(PrivateDnsValidationObserver* observer); void notifyValidationStateUpdate(const std::string& serverIp, Validation validation, uint32_t netId) const REQUIRES(mPrivateDnsLock); Loading