зеркало из https://github.com/mozilla/gecko-dev.git
Backed out 2 changesets (bug 1666711, bug 1666249) for causing failures at test_trr_additional_section.js. CLOSED TREE
Backed out changeset a802f1c429bc (bug 1666711) Backed out changeset da73031913b7 (bug 1666249)
This commit is contained in:
Родитель
227392af30
Коммит
499dcd036b
|
@ -199,10 +199,6 @@ class AddrInfo {
|
||||||
mInfo->mAddresses = std::move(addresses);
|
mInfo->mAddresses = std::move(addresses);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetCanonicalHostname(const nsACString& aCname) {
|
|
||||||
mInfo->mCanonicalName = aCname;
|
|
||||||
}
|
|
||||||
|
|
||||||
already_AddRefed<AddrInfo> Finish() { return mInfo.forget(); }
|
already_AddRefed<AddrInfo> Finish() { return mInfo.forget(); }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -1520,7 +1520,6 @@ nsresult TRR::ReturnData(nsIChannel* aChannel) {
|
||||||
new AddrInfo(mHost, mType, nsTArray<NetAddr>(), mDNS.mTtl));
|
new AddrInfo(mHost, mType, nsTArray<NetAddr>(), mDNS.mTtl));
|
||||||
auto builder = ai->Build();
|
auto builder = ai->Build();
|
||||||
builder.SetAddresses(std::move(mDNS.mAddresses));
|
builder.SetAddresses(std::move(mDNS.mAddresses));
|
||||||
builder.SetCanonicalHostname(mCname);
|
|
||||||
|
|
||||||
// Set timings.
|
// Set timings.
|
||||||
nsCOMPtr<nsITimedChannel> timedChan = do_QueryInterface(aChannel);
|
nsCOMPtr<nsITimedChannel> timedChan = do_QueryInterface(aChannel);
|
||||||
|
|
|
@ -83,16 +83,21 @@ function trr_clear_prefs() {
|
||||||
/// This class sends a DNS query and can be awaited as a promise to get the
|
/// This class sends a DNS query and can be awaited as a promise to get the
|
||||||
/// response.
|
/// response.
|
||||||
class TRRDNSListener {
|
class TRRDNSListener {
|
||||||
constructor(name, options = {}) {
|
constructor(
|
||||||
|
name,
|
||||||
|
expectedAnswer,
|
||||||
|
expectedSuccess = true,
|
||||||
|
delay,
|
||||||
|
trrServer = "",
|
||||||
|
expectEarlyFail = false
|
||||||
|
) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.options = options;
|
this.expectedAnswer = expectedAnswer;
|
||||||
this.expectedAnswer = options.expectedAnswer ?? undefined;
|
this.expectedSuccess = expectedSuccess;
|
||||||
this.expectedSuccess = options.expectedSuccess ?? true;
|
this.delay = delay;
|
||||||
this.delay = options.delay;
|
|
||||||
this.promise = new Promise(resolve => {
|
this.promise = new Promise(resolve => {
|
||||||
this.resolve = resolve;
|
this.resolve = resolve;
|
||||||
});
|
});
|
||||||
let trrServer = options.trrServer || "";
|
|
||||||
|
|
||||||
const dns = Cc["@mozilla.org/network/dns-service;1"].getService(
|
const dns = Cc["@mozilla.org/network/dns-service;1"].getService(
|
||||||
Ci.nsIDNSService
|
Ci.nsIDNSService
|
||||||
|
@ -108,15 +113,15 @@ class TRRDNSListener {
|
||||||
this.request = dns.asyncResolve(
|
this.request = dns.asyncResolve(
|
||||||
name,
|
name,
|
||||||
Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
|
Ci.nsIDNSService.RESOLVE_TYPE_DEFAULT,
|
||||||
this.options.flags || 0,
|
0,
|
||||||
resolverInfo,
|
resolverInfo,
|
||||||
this,
|
this,
|
||||||
currentThread,
|
currentThread,
|
||||||
{} // defaultOriginAttributes
|
{} // defaultOriginAttributes
|
||||||
);
|
);
|
||||||
Assert.ok(!options.expectEarlyFail);
|
Assert.ok(!expectEarlyFail);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
Assert.ok(options.expectEarlyFail);
|
Assert.ok(expectEarlyFail);
|
||||||
this.resolve([e]);
|
this.resolve([e]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,8 +73,8 @@ add_task(async function test_parse_additional_section() {
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
await new TRRDNSListener("something.foo", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("something.foo", "1.2.3.4");
|
||||||
await new TRRDNSListener("else.foo", { expectedAnswer: "2.3.4.5" });
|
await new TRRDNSListener("else.foo", "2.3.4.5");
|
||||||
|
|
||||||
await trrServer.registerDoHAnswers(
|
await trrServer.registerDoHAnswers(
|
||||||
"a.foo",
|
"a.foo",
|
||||||
|
@ -108,14 +108,14 @@ add_task(async function test_parse_additional_section() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let req1 = new TRRDNSListener("a.foo", { expectedAnswer: "1.2.3.4" });
|
let req1 = new TRRDNSListener("a.foo", "1.2.3.4");
|
||||||
|
|
||||||
// A request for b.foo will be in progress by the time we parse the additional
|
// A request for b.foo will be in progress by the time we parse the additional
|
||||||
// record. To keep things simple we don't end up saving the record, instead
|
// record. To keep things simple we don't end up saving the record, instead
|
||||||
// we wait for the in-progress request to complete.
|
// we wait for the in-progress request to complete.
|
||||||
// This check is also racy - if the response for a.foo completes before we make
|
// This check is also racy - if the response for a.foo completes before we make
|
||||||
// this request, we'll put the other IP in the cache. But that is very unlikely.
|
// this request, we'll put the other IP in the cache. But that is very unlikely.
|
||||||
let req2 = new TRRDNSListener("b.foo", { expectedAnswer: "3.4.5.6" });
|
let req2 = new TRRDNSListener("b.foo", "3.4.5.6");
|
||||||
|
|
||||||
await Promise.all([req1, req2]);
|
await Promise.all([req1, req2]);
|
||||||
|
|
||||||
|
@ -143,8 +143,8 @@ add_task(async function test_parse_additional_section() {
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
await new TRRDNSListener("xyz.foo", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("xyz.foo", "1.2.3.4");
|
||||||
await new TRRDNSListener("abc.foo", { expectedAnswer: "::1:2:3:4" });
|
await new TRRDNSListener("abc.foo", "::1:2:3:4");
|
||||||
|
|
||||||
// IPv6 additional
|
// IPv6 additional
|
||||||
await trrServer.registerDoHAnswers(
|
await trrServer.registerDoHAnswers(
|
||||||
|
@ -170,8 +170,8 @@ add_task(async function test_parse_additional_section() {
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
await new TRRDNSListener("ipv6.foo", { expectedAnswer: "2001::a:b:c:d" });
|
await new TRRDNSListener("ipv6.foo", "2001::a:b:c:d");
|
||||||
await new TRRDNSListener("def.foo", { expectedAnswer: "::a:b:c:d" });
|
await new TRRDNSListener("def.foo", "::a:b:c:d");
|
||||||
|
|
||||||
// IPv6 additional
|
// IPv6 additional
|
||||||
await trrServer.registerDoHAnswers(
|
await trrServer.registerDoHAnswers(
|
||||||
|
@ -197,8 +197,8 @@ add_task(async function test_parse_additional_section() {
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|
||||||
await new TRRDNSListener("ipv6b.foo", { expectedAnswer: "2001::a:b:c:d" });
|
await new TRRDNSListener("ipv6b.foo", "2001::a:b:c:d");
|
||||||
await new TRRDNSListener("qqqq.foo", { expectedAnswer: "9.8.7.6" });
|
await new TRRDNSListener("qqqq.foo", "9.8.7.6");
|
||||||
|
|
||||||
// Multiple IPs and multiple additional records
|
// Multiple IPs and multiple additional records
|
||||||
await trrServer.registerDoHAnswers(
|
await trrServer.registerDoHAnswers(
|
||||||
|
@ -249,7 +249,7 @@ add_task(async function test_parse_additional_section() {
|
||||||
|
|
||||||
let [inRequest, inRecord, inStatus] = await new TRRDNSListener(
|
let [inRequest, inRecord, inStatus] = await new TRRDNSListener(
|
||||||
"multiple.foo",
|
"multiple.foo",
|
||||||
{ expectedAnswer: "9.9.9.9" }
|
"9.9.9.9"
|
||||||
);
|
);
|
||||||
let IPs = [];
|
let IPs = [];
|
||||||
inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
|
inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
|
||||||
|
@ -260,9 +260,11 @@ add_task(async function test_parse_additional_section() {
|
||||||
equal(IPs.length, 1);
|
equal(IPs.length, 1);
|
||||||
equal(IPs[0], "9.9.9.9");
|
equal(IPs[0], "9.9.9.9");
|
||||||
IPs = [];
|
IPs = [];
|
||||||
[inRequest, inRecord, inStatus] = await new TRRDNSListener("yuiop.foo", {
|
[inRequest, inRecord, inStatus] = await new TRRDNSListener(
|
||||||
expectedSuccess: false,
|
"yuiop.foo",
|
||||||
});
|
undefined,
|
||||||
|
false
|
||||||
|
);
|
||||||
inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
|
inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
|
||||||
inRecord.rewind();
|
inRecord.rewind();
|
||||||
while (inRecord.hasMore()) {
|
while (inRecord.hasMore()) {
|
||||||
|
|
|
@ -92,7 +92,7 @@ add_task(async function test_trr_casing() {
|
||||||
data: "1.2.3.4",
|
data: "1.2.3.4",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
await new TRRDNSListener("a.example.com", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("a.example.com", "1.2.3.4");
|
||||||
|
|
||||||
await trrServer.registerDoHAnswers("a.test.com", "A", [
|
await trrServer.registerDoHAnswers("a.test.com", "A", [
|
||||||
{
|
{
|
||||||
|
@ -123,7 +123,7 @@ add_task(async function test_trr_casing() {
|
||||||
data: "8.8.8.8",
|
data: "8.8.8.8",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
await new TRRDNSListener("a.test.com", { expectedAnswer: "8.8.8.8" });
|
await new TRRDNSListener("a.test.com", "8.8.8.8");
|
||||||
|
|
||||||
await trrServer.registerDoHAnswers("CAPITAL.COM", "A", [
|
await trrServer.registerDoHAnswers("CAPITAL.COM", "A", [
|
||||||
{
|
{
|
||||||
|
@ -134,8 +134,8 @@ add_task(async function test_trr_casing() {
|
||||||
data: "2.2.2.2",
|
data: "2.2.2.2",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
await new TRRDNSListener("CAPITAL.COM", { expectedAnswer: "2.2.2.2" });
|
await new TRRDNSListener("CAPITAL.COM", "2.2.2.2");
|
||||||
await new TRRDNSListener("CAPITAL.COM.", { expectedAnswer: "2.2.2.2" });
|
await new TRRDNSListener("CAPITAL.COM.", "2.2.2.2");
|
||||||
|
|
||||||
await trrServer.stop();
|
await trrServer.stop();
|
||||||
});
|
});
|
||||||
|
|
|
@ -78,14 +78,7 @@ add_task(async function test_follow_cnames_same_response() {
|
||||||
data: "1.2.3.4",
|
data: "1.2.3.4",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
let [inRequest, inRecord, inStatus] = await new TRRDNSListener(
|
await new TRRDNSListener("something.foo", "1.2.3.4");
|
||||||
"something.foo",
|
|
||||||
{
|
|
||||||
expectedAnswer: "1.2.3.4",
|
|
||||||
flags: Ci.nsIDNSService.RESOLVE_CANONICAL_NAME,
|
|
||||||
}
|
|
||||||
);
|
|
||||||
equal(inRecord.QueryInterface(Ci.nsIDNSAddrRecord).canonicalName, "xyz.foo");
|
|
||||||
|
|
||||||
await trrServer.registerDoHAnswers("a.foo", "A", [
|
await trrServer.registerDoHAnswers("a.foo", "A", [
|
||||||
{
|
{
|
||||||
|
@ -105,7 +98,7 @@ add_task(async function test_follow_cnames_same_response() {
|
||||||
data: "2.3.4.5",
|
data: "2.3.4.5",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
await new TRRDNSListener("a.foo", { expectedAnswer: "2.3.4.5" });
|
await new TRRDNSListener("a.foo", "2.3.4.5");
|
||||||
|
|
||||||
await trrServer.stop();
|
await trrServer.stop();
|
||||||
});
|
});
|
||||||
|
|
|
@ -61,7 +61,7 @@ add_task(async function test_extended_error_bogus() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await new TRRDNSListener("something.foo", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("something.foo", "1.2.3.4");
|
||||||
|
|
||||||
await trrServer.registerDoHAnswers(
|
await trrServer.registerDoHAnswers(
|
||||||
"a.foo",
|
"a.foo",
|
||||||
|
@ -84,9 +84,7 @@ add_task(async function test_extended_error_bogus() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check that we don't fall back to DNS
|
// Check that we don't fall back to DNS
|
||||||
let [, , inStatus] = await new TRRDNSListener("a.foo", {
|
let [, , inStatus] = await new TRRDNSListener("a.foo", undefined, false);
|
||||||
expectedSuccess: false,
|
|
||||||
});
|
|
||||||
Assert.ok(
|
Assert.ok(
|
||||||
!Components.isSuccessCode(inStatus),
|
!Components.isSuccessCode(inStatus),
|
||||||
`${inStatus} should be an error code`
|
`${inStatus} should be an error code`
|
||||||
|
@ -115,9 +113,7 @@ add_task(async function test_extended_error_filtered() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check that we don't fall back to DNS
|
// Check that we don't fall back to DNS
|
||||||
let [, , inStatus] = await new TRRDNSListener("b.foo", {
|
let [, , inStatus] = await new TRRDNSListener("b.foo", undefined, false);
|
||||||
expectedSuccess: false,
|
|
||||||
});
|
|
||||||
Assert.ok(
|
Assert.ok(
|
||||||
!Components.isSuccessCode(inStatus),
|
!Components.isSuccessCode(inStatus),
|
||||||
`${inStatus} should be an error code`
|
`${inStatus} should be an error code`
|
||||||
|
@ -146,7 +142,7 @@ add_task(async function test_extended_error_not_ready() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// For this code it's OK to fallback
|
// For this code it's OK to fallback
|
||||||
await new TRRDNSListener("c.foo", { expectedAnswer: "127.0.0.1" });
|
await new TRRDNSListener("c.foo", "127.0.0.1");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function ipv6_answer_and_delayed_ipv4_error() {
|
add_task(async function ipv6_answer_and_delayed_ipv4_error() {
|
||||||
|
@ -183,7 +179,7 @@ add_task(async function ipv6_answer_and_delayed_ipv4_error() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check that we don't fall back to DNS
|
// Check that we don't fall back to DNS
|
||||||
await new TRRDNSListener("delay1.com", { expectedAnswer: "::a:b:c:d" });
|
await new TRRDNSListener("delay1.com", "::a:b:c:d");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function ipv4_error_and_delayed_ipv6_answer() {
|
add_task(async function ipv4_error_and_delayed_ipv6_answer() {
|
||||||
|
@ -225,7 +221,7 @@ add_task(async function ipv4_error_and_delayed_ipv6_answer() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check that we don't fall back to DNS
|
// Check that we don't fall back to DNS
|
||||||
await new TRRDNSListener("delay2.com", { expectedAnswer: "::a:b:c:d" });
|
await new TRRDNSListener("delay2.com", "::a:b:c:d");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function ipv4_answer_and_delayed_ipv6_error() {
|
add_task(async function ipv4_answer_and_delayed_ipv6_error() {
|
||||||
|
@ -262,7 +258,7 @@ add_task(async function ipv4_answer_and_delayed_ipv6_error() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check that we don't fall back to DNS
|
// Check that we don't fall back to DNS
|
||||||
await new TRRDNSListener("delay3.com", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("delay3.com", "1.2.3.4");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(async function delayed_ipv4_answer_and_ipv6_error() {
|
add_task(async function delayed_ipv4_answer_and_ipv6_error() {
|
||||||
|
@ -304,5 +300,5 @@ add_task(async function delayed_ipv4_answer_and_ipv6_error() {
|
||||||
);
|
);
|
||||||
|
|
||||||
// Check that we don't fall back to DNS
|
// Check that we don't fall back to DNS
|
||||||
await new TRRDNSListener("delay4.com", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("delay4.com", "1.2.3.4");
|
||||||
});
|
});
|
||||||
|
|
|
@ -248,7 +248,7 @@ add_task(async function test_aliasform() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await new TRRDNSListener("test.com", { expectedAnswer: "1.2.3.4" });
|
await new TRRDNSListener("test.com", "1.2.3.4");
|
||||||
|
|
||||||
// Test a chain of HTTPSSVC AliasForm and CNAMEs
|
// Test a chain of HTTPSSVC AliasForm and CNAMEs
|
||||||
await trrServer.registerDoHAnswers("x.com", "A", [
|
await trrServer.registerDoHAnswers("x.com", "A", [
|
||||||
|
@ -297,7 +297,7 @@ add_task(async function test_aliasform() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
await new TRRDNSListener("x.com", { expectedAnswer: "4.3.2.1" });
|
await new TRRDNSListener("x.com", "4.3.2.1");
|
||||||
|
|
||||||
// We get a ServiceForm instead of a A answer, CNAME or AliasForm
|
// We get a ServiceForm instead of a A answer, CNAME or AliasForm
|
||||||
await trrServer.registerDoHAnswers("no-ip-host.com", "A", [
|
await trrServer.registerDoHAnswers("no-ip-host.com", "A", [
|
||||||
|
@ -321,9 +321,11 @@ add_task(async function test_aliasform() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
let [, , inStatus] = await new TRRDNSListener("no-ip-host.com", {
|
let [, , inStatus] = await new TRRDNSListener(
|
||||||
expectedSuccess: false,
|
"no-ip-host.com",
|
||||||
});
|
undefined,
|
||||||
|
false
|
||||||
|
);
|
||||||
Assert.ok(
|
Assert.ok(
|
||||||
!Components.isSuccessCode(inStatus),
|
!Components.isSuccessCode(inStatus),
|
||||||
`${inStatus} should be an error code`
|
`${inStatus} should be an error code`
|
||||||
|
@ -354,9 +356,7 @@ add_task(async function test_aliasform() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
[, , inStatus] = await new TRRDNSListener("loop.com", {
|
[, , inStatus] = await new TRRDNSListener("loop.com", undefined, false);
|
||||||
expectedSuccess: false,
|
|
||||||
});
|
|
||||||
Assert.ok(
|
Assert.ok(
|
||||||
!Components.isSuccessCode(inStatus),
|
!Components.isSuccessCode(inStatus),
|
||||||
`${inStatus} should be an error code`
|
`${inStatus} should be an error code`
|
||||||
|
@ -377,9 +377,7 @@ add_task(async function test_aliasform() {
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
|
|
||||||
[, , inStatus] = await new TRRDNSListener("empty.com", {
|
[, , inStatus] = await new TRRDNSListener("empty.com", undefined, false);
|
||||||
expectedSuccess: false,
|
|
||||||
});
|
|
||||||
Assert.ok(
|
Assert.ok(
|
||||||
!Components.isSuccessCode(inStatus),
|
!Components.isSuccessCode(inStatus),
|
||||||
`${inStatus} should be an error code`
|
`${inStatus} should be an error code`
|
||||||
|
|
|
@ -85,9 +85,7 @@ add_task(async function test_add_nat64_prefix_to_trr() {
|
||||||
data: "1.2.3.4",
|
data: "1.2.3.4",
|
||||||
},
|
},
|
||||||
]);
|
]);
|
||||||
let [, inRecord] = await new TRRDNSListener("xyz.foo", {
|
let [, inRecord] = await new TRRDNSListener("xyz.foo", undefined, false);
|
||||||
expectedSuccess: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
|
inRecord.QueryInterface(Ci.nsIDNSAddrRecord);
|
||||||
inRecord.getNextAddrAsString();
|
inRecord.getNextAddrAsString();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче