Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 03d77cd2 authored by Automerger Merge Worker's avatar Automerger Merge Worker Committed by Android (Google) Code Review
Browse files

Merge "Merge "Apply PrivateDnsValidationObserver to DnsTlsDispatcher" am:...

Merge "Merge "Apply PrivateDnsValidationObserver to DnsTlsDispatcher" am: d47d8125 am: c754472a am: 3b41e553"
parents d73c1236 453f0f01
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -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"
@@ -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";
+2 −1
Original line number Diff line number Diff line
@@ -40,7 +40,8 @@ class DnsResolver {
    ResolverController resolverCtrl;

  private:
    DnsResolver() {}
    DnsResolver();

    DnsProxyListener mDnsProxyListener;
    DnsQueryLog mQueryLog;
};
+5 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
#include "DnsTlsServer.h"
#include "DnsTlsTransport.h"
#include "IDnsTlsSocketFactory.h"
#include "PrivateDnsValidationObserver.h"
#include "resolv_private.h"

namespace android {
@@ -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)
@@ -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();

+2 −1
Original line number Diff line number Diff line
@@ -86,6 +86,8 @@ class PrivateDnsConfiguration {
        }
    };

    void setObserver(PrivateDnsValidationObserver* observer);

  private:
    typedef std::map<ServerIdentity, DnsTlsServer> PrivateDnsTracker;
    typedef std::set<DnsTlsServer, AddressComparator> ThreadTracker;
@@ -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);