Bug 1823358 - Add new network.trr.ohttp.uri pref r=keeler,necko-reviewers,jesup

Differential Revision: https://phabricator.services.mozilla.com/D172988
This commit is contained in:
Valentin Gosu 2023-03-21 14:51:48 +00:00
parent 9f1bbb9836
commit b1dfac72d9
7 changed files with 42 additions and 3 deletions

View File

@ -12066,6 +12066,12 @@
value: ""
mirror: never
# The URI used for the target DoH server when network.trr.use_ohttp is true
- name: network.trr.ohttp.uri
type: String
value: ""
mirror: never
# Allow the network changed event to get sent when a network topology or setup
# change is noticed while running.
- name: network.notify.changed

View File

@ -216,6 +216,11 @@ void TRRService::SetDetectedTrrURI(const nsACString& aURI) {
return;
}
if (StaticPrefs::network_trr_use_ohttp()) {
LOG(("No autodetection when using OHTTP"));
return;
}
mURISetByDetection = MaybeSetPrivateURI(aURI);
}
@ -360,7 +365,7 @@ nsresult TRRService::ReadPrefs(const char* name) {
}
if (!name || !strcmp(name, TRR_PREF("uri")) ||
!strcmp(name, TRR_PREF("default_provider_uri")) ||
!strcmp(name, kRolloutURIPref)) {
!strcmp(name, kRolloutURIPref) || !strcmp(name, TRR_PREF("ohttp.uri"))) {
OnTRRURIChange();
}
if (!name || !strcmp(name, TRR_PREF("credentials"))) {

View File

@ -91,6 +91,11 @@ void TRRServiceBase::ProcessURITemplate(nsACString& aURI) {
void TRRServiceBase::CheckURIPrefs() {
mURISetByDetection = false;
if (StaticPrefs::network_trr_use_ohttp() && !mOHTTPURIPref.IsEmpty()) {
MaybeSetPrivateURI(mOHTTPURIPref);
return;
}
// The user has set a custom URI so it takes precedence.
if (!mURIPref.IsEmpty()) {
MaybeSetPrivateURI(mURIPref);
@ -163,6 +168,7 @@ void TRRServiceBase::OnTRRURIChange() {
Preferences::GetCString("network.trr.uri", mURIPref);
Preferences::GetCString(kRolloutURIPref, mRolloutURIPref);
Preferences::GetCString("network.trr.default_provider_uri", mDefaultURIPref);
Preferences::GetCString("network.trr.ohttp.uri", mOHTTPURIPref);
CheckURIPrefs();
}

View File

@ -75,6 +75,7 @@ class TRRServiceBase : public nsIProxyConfigChangedCallback {
nsCString mURIPref;
nsCString mRolloutURIPref;
nsCString mDefaultURIPref;
nsCString mOHTTPURIPref;
Atomic<nsIDNSService::ResolverMode, Relaxed> mMode{
nsIDNSService::MODE_NATIVEONLY};

View File

@ -161,7 +161,8 @@ void TRRServiceParent::PrefsChanged(const char* aName, void* aSelf) {
void TRRServiceParent::prefsChanged(const char* aName) {
if (!aName || !strcmp(aName, "network.trr.uri") ||
!strcmp(aName, "network.trr.default_provider_uri") ||
!strcmp(aName, kRolloutURIPref)) {
!strcmp(aName, kRolloutURIPref) ||
!strcmp(aName, "network.trr.ohttp.uri")) {
OnTRRURIChange();
}

View File

@ -89,6 +89,7 @@ async function forwardToTRR(request, response) {
add_setup(async function setup() {
h2Port = trr_test_setup();
runningOHTTPTests = true;
if (mozinfo.socketprocess_networking) {
Services.dns; // Needed to trigger socket process.
@ -123,6 +124,7 @@ add_setup(async function setup() {
Services.prefs.clearUserPref("network.trr.use_ohttp");
Services.prefs.clearUserPref("network.trr.ohttp.config_uri");
Services.prefs.clearUserPref("network.trr.ohttp.relay_uri");
Services.prefs.clearUserPref("network.trr.ohttp.uri");
await new Promise((resolve, reject) => {
httpServer.stop(resolve);
});

View File

@ -39,6 +39,7 @@ async function SetParentalControlEnabled(aEnabled) {
}
let runningODoHTests = false;
let runningOHTTPTests = false;
let h2Port;
function setModeAndURIForODoH(mode, path) {
@ -50,8 +51,25 @@ function setModeAndURIForODoH(mode, path) {
Services.prefs.setCharPref("network.trr.odoh.target_path", `${path}`);
}
function setModeAndURIForOHTTP(mode, path, domain) {
Services.prefs.setIntPref("network.trr.mode", mode);
if (domain) {
Services.prefs.setCharPref(
"network.trr.ohttp.uri",
`https://${domain}:${h2Port}/${path}`
);
} else {
Services.prefs.setCharPref(
"network.trr.ohttp.uri",
`https://${TRR_Domain}:${h2Port}/${path}`
);
}
}
function setModeAndURI(mode, path, domain) {
if (runningODoHTests) {
if (runningOHTTPTests) {
setModeAndURIForOHTTP(mode, path, domain);
} else if (runningODoHTests) {
setModeAndURIForODoH(mode, path);
} else {
Services.prefs.setIntPref("network.trr.mode", mode);