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

Commit c754472a authored by Mike Yu's avatar Mike Yu Committed by Automerger Merge Worker
Browse files

Merge "Apply PrivateDnsValidationObserver to DnsTlsDispatcher" am: d47d8125

Original change: https://android-review.googlesource.com/c/platform/packages/modules/DnsResolver/+/1527453

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I2405ea47c39b768645c579ee62ee43fb75da801b
parents 7eb28a3f d47d8125
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);