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:
Butkovits Atila 2020-09-23 11:49:14 +03:00
Родитель 227392af30
Коммит 499dcd036b
9 изменённых файлов: 54 добавлений и 67 удалений

Просмотреть файл

@ -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();