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

Commit ae5fe72c authored by waynema's avatar waynema
Browse files

Cleanup DoH statistics when DoH is not supported in the private DNS mode.

Test steps:
a. Default enable strict mode.
b. Turn on WiFi and Mobile data.
c. Swtich private DNS mode from strict mode to automatic mode.
d. Expect to see DoH statistics only on WiFi.
e. Switch private DNS mode from automatic mode to off mode.
f. Expect to see no DoH statistics showing up on both WiFi and Mobile
data.

Tests will be done in a follow-up CL.

Bug: 201735918
Test: Check output in dumpsys dnsresolver
Change-Id: Ie4e67c3967778ada480cb2b5f9222cde5d2c705e
parent 10eed9da
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#include "ResolverEventReporter.h"
#include "doh.h"
#include "netd_resolv/resolv.h"
#include "resolv_cache.h"
#include "resolv_private.h"
#include "util.h"

@@ -476,6 +477,7 @@ int PrivateDnsConfiguration::setDoh(int32_t netId, uint32_t mark,
                           dohId.status);
        mPrivateDnsLog.push(std::move(record));
        LOG(INFO) << __func__ << ": Upgrading server to DoH: " << name;
        resolv_stats_set_addrs(netId, PROTO_DOH, {dohId.ipAddr}, 443);

        int probeTimeout = Experiments::getInstance()->getFlag("doh_probe_timeout_ms",
                                                               kDohProbeDefaultTimeoutMs);
@@ -495,6 +497,7 @@ void PrivateDnsConfiguration::clearDohLocked(unsigned netId) {
    LOG(DEBUG) << "PrivateDnsConfiguration::clearDohLocked (" << netId << ")";
    if (mDohDispatcher != nullptr) doh_net_delete(mDohDispatcher, netId);
    mDohTracker.erase(netId);
    resolv_stats_set_addrs(netId, PROTO_DOH, {}, 443);
}

void PrivateDnsConfiguration::clearDoh(unsigned netId) {
+4 −13
Original line number Diff line number Diff line
@@ -228,22 +228,13 @@ int ResolverController::setResolverConfiguration(const ResolverParamsParcel& res
    }

    if (isDoHEnabled()) {
        if (err = privateDnsConfiguration.setDoh(resolverParams.netId, netcontext.app_mark,
                                                 tlsServers, resolverParams.tlsName,
                                                 resolverParams.caCertificate);
            err != 0) {
            return err;
        }
        auto result = privateDnsConfiguration.getDohServer(resolverParams.netId);
        if (result.ok()) {
            const netdutils::IPSockAddr sockAddr = result.value();
            if (err = resolv_stats_set_addrs(resolverParams.netId, PROTO_DOH,
                                             {sockAddr.ip().toString()}, sockAddr.port());
                err != 0) {
        err = privateDnsConfiguration.setDoh(resolverParams.netId, netcontext.app_mark, tlsServers,
                                             resolverParams.tlsName, resolverParams.caCertificate);

        if (err != 0) {
            return err;
        }
    }
    }

    res_params res_params = {};
    res_params.sample_validity = resolverParams.sampleValiditySeconds;