commit a997f764f303fb5422be58938b2540f0a5ffa35a
parent 6ade104ae9b7fcfb8a9221a315bb7578de92fe53
Author: Norisz Fay <nfay@mozilla.com>
Date: Thu, 18 Dec 2025 04:30:06 +0200
Revert "Bug 1995869, Bug 2004872: Clean up DNS code r=necko-reviewers,valentin" for causing lint failure on nsDNSService2.h:21
This reverts commit 4e7db39bb33668665ac2c2571ebef16ea2e39ad2.
Revert "Bug 1995869: Initialize DNS earlier in IOService init r=necko-reviewers,valentin"
This reverts commit 3232d2a2c6e0ebeae7f494b3fd9e4c4ca7fa5dec.
Diffstat:
5 files changed, 15 insertions(+), 51 deletions(-)
diff --git a/modules/libpref/test/unit/xpcshell.toml b/modules/libpref/test/unit/xpcshell.toml
@@ -4,10 +4,6 @@ support-files = [
"data/testPref.js",
"extdata/testExt.js",
]
-# resetPrefs() is racy in SocketProcess (and probably elsewhere as well)
-skip-if = [
- "socketprocess_networking",
-]
["test_backupPrefFile.js"]
diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
@@ -262,7 +262,6 @@ static const char* gCallbackPrefsForSocketProcess[] = {
"network.lna.address_space.public.override",
"network.lna.websocket.enabled",
"network.lna.local-network-to-localhost.skip-checks",
- "network.socket.forcePort",
nullptr,
};
@@ -334,13 +333,8 @@ nsresult nsIOService::Init() {
InitializeNetworkLinkService();
InitializeProtocolProxyService();
- SetOffline(false);
- // This is just to start the DNS service to make it fast to get later.
- // Don't invoke directly since we're already in GetService. RefPtr needed
- // because already_AddRefed<> doesn't like to be dropped
- NS_DispatchToCurrentThread(NS_NewRunnableFunction(
- __func__, []() { RefPtr<nsIDNSService> dns = GetOrInitDNSService(); }));
+ SetOffline(false);
return NS_OK;
}
diff --git a/netwerk/dns/nsDNSService2.cpp b/netwerk/dns/nsDNSService2.cpp
@@ -44,8 +44,6 @@
#include "mozilla/StaticPrefs_network.h"
#include "mozilla/StaticPtr.h"
#include "mozilla/SyncRunnable.h"
-// Put DNSLogging.h at the end to avoid LOG being overwritten by other headers.
-#include "DNSLogging.h"
using namespace mozilla;
using namespace mozilla::net;
@@ -534,7 +532,6 @@ void nsDNSAsyncRequest::OnResolveHostComplete(nsHostResolver* resolver,
}
}
- LOG(("OnResolveHostComplete: %s", mHost.get()));
mListener->OnLookupComplete(this, rec, status);
mListener = nullptr;
}
@@ -666,15 +663,11 @@ NS_IMPL_ISUPPORTS(DNSServiceWrapper, nsIDNSService, nsPIDNSService)
already_AddRefed<nsIDNSService> DNSServiceWrapper::GetSingleton() {
if (!gDNSServiceWrapper) {
gDNSServiceWrapper = new DNSServiceWrapper();
- // Not strictly needed, but simple and avoids bypassing lock-checking
- MutexAutoLock lock(gDNSServiceWrapper->mLock);
gDNSServiceWrapper->mDNSServiceInUse = ChildDNSService::GetSingleton();
if (gDNSServiceWrapper->mDNSServiceInUse) {
ClearOnShutdown(&gDNSServiceWrapper);
nsDNSPrefetch::Initialize(gDNSServiceWrapper);
} else {
- MutexAutoUnlock unlock(
- gDNSServiceWrapper->mLock); // don't destroy with held lock
gDNSServiceWrapper = nullptr;
}
}
@@ -720,21 +713,13 @@ NS_IMPL_ISUPPORTS_INHERITED(nsDNSService, DNSServiceBase, nsIDNSService,
static StaticRefPtr<nsDNSService> gDNSService;
static Atomic<bool> gInited(false);
-// Note: be careful of races! Called from multiple threads
already_AddRefed<nsIDNSService> GetOrInitDNSService() {
if (gInited) {
return nsDNSService::GetXPCOMSingleton();
}
nsCOMPtr<nsIDNSService> dns = nullptr;
- auto initTask = [&dns]() {
- // In case someone inited it while we were waiting
- if (gInited) {
- dns = nsDNSService::GetXPCOMSingleton();
- return;
- }
- dns = do_GetService(NS_DNSSERVICE_CID);
- };
+ auto initTask = [&dns]() { dns = do_GetService(NS_DNSSERVICE_CID); };
if (!NS_IsMainThread()) {
// Forward to the main thread synchronously.
RefPtr<nsIThread> mainThread = do_GetMainThread();
@@ -823,7 +808,6 @@ void nsDNSService::ReadPrefs(const char* name) {
}
}
if (!name || !strcmp(name, kPrefIPv4OnlyDomains)) {
- MutexAutoLock lock(mLock);
Preferences::GetCString(kPrefIPv4OnlyDomains, mIPv4OnlyDomains);
}
if (!name || !strcmp(name, kPrefDnsLocalDomains)) {
@@ -858,6 +842,7 @@ void nsDNSService::ReadPrefs(const char* name) {
NS_IMETHODIMP
nsDNSService::Init() {
+ MOZ_ASSERT(!mResolver);
MOZ_ASSERT(NS_IsMainThread());
ReadPrefs(nullptr);
@@ -875,7 +860,6 @@ nsDNSService::Init() {
if (NS_SUCCEEDED(rv)) {
// now, set all of our member variables while holding the lock
MutexAutoLock lock(mLock);
- MOZ_ASSERT(!mResolver);
mResolver = res;
}
@@ -901,12 +885,7 @@ nsDNSService::Init() {
do_GetService("@mozilla.org/network/oblivious-http-service;1"));
mTrrService = new TRRService();
- bool httpsEnabled;
- {
- MutexAutoLock lock(mLock);
- httpsEnabled = mResolver->IsNativeHTTPSEnabled();
- }
- if (NS_FAILED(mTrrService->Init(httpsEnabled))) {
+ if (NS_FAILED(mTrrService->Init(mResolver->IsNativeHTTPSEnabled()))) {
mTrrService = nullptr;
}
@@ -1144,7 +1123,6 @@ nsDNSService::AsyncResolve(const nsACString& aHostname,
nsICancelable** result) {
OriginAttributes attrs;
- LOG(("DNSService::AsyncResolve %s", PromiseFlatCString(aHostname).get()));
if (aArgc == 1) {
if (!aOriginAttributes.isObject() || !attrs.Init(aCx, aOriginAttributes)) {
return NS_ERROR_INVALID_ARG;
@@ -1542,14 +1520,14 @@ nsresult nsDNSService::GetTRRDomainKey(nsACString& aTRRDomain) {
return NS_OK;
}
-size_t nsDNSService::SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) {
+size_t nsDNSService::SizeOfIncludingThis(
+ mozilla::MallocSizeOf mallocSizeOf) const {
// Measurement of the following members may be added later if DMD finds it
// is worthwhile:
// - mIDN
// - mLock
size_t n = mallocSizeOf(this);
- MutexAutoLock lock(mLock);
n += mResolver ? mResolver->SizeOfIncludingThis(mallocSizeOf) : 0;
n += mIPv4OnlyDomains.SizeOfExcludingThisIfUnshared(mallocSizeOf);
n += mLocalDomains.SizeOfExcludingThis(mallocSizeOf);
diff --git a/netwerk/dns/nsDNSService2.h b/netwerk/dns/nsDNSService2.h
@@ -40,7 +40,7 @@ class DNSServiceWrapper final : public nsPIDNSService {
nsPIDNSService* PIDNSService();
mozilla::Mutex mLock{"DNSServiceWrapper.mLock"};
- nsCOMPtr<nsIDNSService> mDNSServiceInUse MOZ_GUARDED_BY(mLock);
+ nsCOMPtr<nsIDNSService> mDNSServiceInUse;
nsCOMPtr<nsIDNSService> mBackupDNSService;
};
@@ -58,7 +58,7 @@ class nsDNSService final : public mozilla::net::DNSServiceBase,
static already_AddRefed<nsIDNSService> GetXPCOMSingleton();
- size_t SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf);
+ size_t SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) const;
bool GetOffline() const;
@@ -83,7 +83,7 @@ class nsDNSService final : public mozilla::net::DNSServiceBase,
nsresult PreprocessHostname(bool aLocalDomain, const nsACString& aInput,
nsACString& aACE);
- bool IsLocalDomain(const nsACString& aHostname) const MOZ_REQUIRES(mLock);
+ bool IsLocalDomain(const nsACString& aHostname) const;
nsresult AsyncResolveInternal(
const nsACString& aHostname, uint16_t type, nsIDNSService::DNSFlags flags,
@@ -106,27 +106,25 @@ class nsDNSService final : public mozilla::net::DNSServiceBase,
// Locks the mutex and returns an addreffed resolver. May return null.
already_AddRefed<nsHostResolver> GetResolverLocked();
- RefPtr<nsHostResolver> mResolver MOZ_GUARDED_BY(mLock);
+ RefPtr<nsHostResolver> mResolver;
// mLock protects access to mResolver, mLocalDomains, mIPv4OnlyDomains,
// mFailedSVCDomainNames, and mMockHTTPSRRDomain.
- mozilla::Mutex mLock{"nsDNSServer.mLock"};
+ mozilla::Mutex mLock MOZ_UNANNOTATED{"nsDNSServer.mLock"};
// mIPv4OnlyDomains is a comma-separated list of domains for which only
// IPv4 DNS lookups are performed. This allows the user to disable IPv6 on
// a per-domain basis and work around broken DNS servers. See bug 68796.
- nsCString mIPv4OnlyDomains MOZ_GUARDED_BY(mLock);
+ nsCString mIPv4OnlyDomains;
nsCString mForceResolve;
- nsCString mMockHTTPSRRDomain MOZ_GUARDED_BY(mLock);
+ nsCString mMockHTTPSRRDomain;
mozilla::Atomic<bool, mozilla::Relaxed> mHasMockHTTPSRRDomainSet{false};
bool mNotifyResolution = false;
bool mForceResolveOn = false;
- nsTHashSet<nsCString> mLocalDomains MOZ_GUARDED_BY(mLock);
+ nsTHashSet<nsCString> mLocalDomains;
RefPtr<mozilla::net::TRRService> mTrrService;
- nsClassHashtable<nsCStringHashKey, nsTArray<nsCString>> mFailedSVCDomainNames
- MOZ_GUARDED_BY(mLock);
- ;
+ nsClassHashtable<nsCStringHashKey, nsTArray<nsCString>> mFailedSVCDomainNames;
};
already_AddRefed<nsIDNSService> GetOrInitDNSService();
diff --git a/toolkit/components/backgroundtasks/tests/browser/browser_xpcom_graph_wait.js b/toolkit/components/backgroundtasks/tests/browser/browser_xpcom_graph_wait.js
@@ -61,8 +61,6 @@ const backgroundtaskPhases = {
"@mozilla.org/layout/content-policy;1",
"@mozilla.org/memory-reporter-manager;1",
"@mozilla.org/network/captive-portal-service;1",
- "@mozilla.org/network/dns-service;1",
- "@mozilla.org/network/oblivious-http-service;1",
"@mozilla.org/network/effective-tld-service;1",
"@mozilla.org/network/idn-service;1",
"@mozilla.org/network/io-service;1",