diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index d82df9e93964..8ccbbe81ea5a 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5318,7 +5318,7 @@ pref("network.captive-portal-service.backoffFactor", "5.0"); pref("network.captive-portal-service.enabled", false); // DNS Trusted Recursive Resolver -// 0 - off, 1 - race, 2 TRR first, 3 TRR only, 4 shadow +// 0 - default off, 1 - race, 2 TRR first, 3 TRR only, 4 shadow, 5 off by choice pref("network.trr.mode", 0); // DNS-over-HTTP service to use, must be HTTPS:// pref("network.trr.uri", ""); diff --git a/netwerk/dns/TRRService.cpp b/netwerk/dns/TRRService.cpp index 9e17669fac1e..4f048b8a851e 100644 --- a/netwerk/dns/TRRService.cpp +++ b/netwerk/dns/TRRService.cpp @@ -324,7 +324,7 @@ TRRService::Observe(nsISupports *aSubject, void TRRService::MaybeConfirm() { - if ((mMode == MODE_NATIVEONLY) || mConfirmer || + if (TRR_DISABLED(mMode) || mConfirmer || mConfirmationState != CONFIRM_TRYING) { LOG(("TRRService:MaybeConfirm mode=%d, mConfirmer=%p mConfirmationState=%d\n", (int)mMode, (void *)mConfirmer, (int)mConfirmationState)); @@ -351,7 +351,7 @@ bool TRRService::MaybeBootstrap(const nsACString &aPossible, nsACString &aResult) { MutexAutoLock lock(mLock); - if ((mMode == MODE_NATIVEONLY) || mBootstrapAddr.IsEmpty()) { + if (TRR_DISABLED(mMode) || mBootstrapAddr.IsEmpty()) { return false; } diff --git a/netwerk/dns/nsHostResolver.cpp b/netwerk/dns/nsHostResolver.cpp index 21cd99cd9544..4282d8989a27 100644 --- a/netwerk/dns/nsHostResolver.cpp +++ b/netwerk/dns/nsHostResolver.cpp @@ -314,6 +314,9 @@ nsHostRecord::ResolveComplete() case MODE_SHADOW: AccumulateCategorical(Telemetry::LABELS_DNS_LOOKUP_ALGORITHM::trrShadow); break; + case MODE_TRROFF: + AccumulateCategorical(Telemetry::LABELS_DNS_LOOKUP_ALGORITHM::trrOff); + break; } if (mTRRUsed && !mTRRSuccess && mNativeSuccess && gTRRService) { @@ -1267,12 +1270,12 @@ nsHostResolver::NameLookup(nsHostRecord *rec) mode = MODE_NATIVEONLY; } - if (mode != MODE_NATIVEONLY) { + if (!TRR_DISABLED(mode)) { rv = TrrLookup(rec); } if ((mode == MODE_PARALLEL) || - (mode == MODE_NATIVEONLY) || + TRR_DISABLED(mode) || (mode == MODE_SHADOW) || ((mode == MODE_TRRFIRST) && NS_FAILED(rv))) { rv = NativeLookup(rec); diff --git a/netwerk/dns/nsHostResolver.h b/netwerk/dns/nsHostResolver.h index 503d87016cd4..84ef8c034d88 100644 --- a/netwerk/dns/nsHostResolver.h +++ b/netwerk/dns/nsHostResolver.h @@ -29,14 +29,17 @@ class nsResolveHostCallback; namespace mozilla { namespace net { class TRR; enum ResolverMode { - MODE_NATIVEONLY, // TRR OFF - MODE_PARALLEL, // race and use the first response - MODE_TRRFIRST, // fallback to native on TRR failure - MODE_TRRONLY, // don't even fallback - MODE_SHADOW // race for stats, but always use native result + MODE_NATIVEONLY, // 0 - TRR OFF (by default) + MODE_PARALLEL, // 1 - race and use the first response + MODE_TRRFIRST, // 2 - fallback to native on TRR failure + MODE_TRRONLY, // 3 - don't even fallback + MODE_SHADOW, // 4 - race for stats, but always use native result + MODE_TRROFF // 5 - identical to MODE_NATIVEONLY but explicitly selected }; } } +#define TRR_DISABLED(x) (((x) == MODE_NATIVEONLY) || ((x) == MODE_TRROFF)) + extern mozilla::Atomic gNativeIsLocalhost; #define MAX_RESOLVER_THREADS_FOR_ANY_PRIORITY 3 diff --git a/toolkit/components/telemetry/Histograms.json b/toolkit/components/telemetry/Histograms.json index be27c26e5086..a988c054bc32 100644 --- a/toolkit/components/telemetry/Histograms.json +++ b/toolkit/components/telemetry/Histograms.json @@ -3294,7 +3294,7 @@ "alert_emails": ["necko@mozilla.com", "dstenberg@mozilla.com"], "expires_in_version": "never", "kind": "categorical", - "labels": ["nativeOnly", "trrRace", "trrFirst", "trrOnly", "trrShadow"], + "labels": ["nativeOnly", "trrRace", "trrFirst", "trrOnly", "trrShadow", "trrOff"], "bug_numbers": [1434852], "description": "DNS: lookup algorithm" },