Fix pinned lookup for dual-stack HTTPS requests
This commit is contained in:
1 parent
cc2fd05062
commit
93f07e838e
2 files changed
+22
-3
No files matched your search
@@ -35,6 +35,12 @@ function validateWeebRequest(value, options = {}) {
|
||||
return url;
|
||||
}
|
||||
|
||||
function pinnedLookup(selected) {
|
||||
return (_hostname, lookupOptions, callback) => lookupOptions.all
|
||||
? callback(null, [{ address: selected.address, family: selected.family }])
|
||||
: callback(null, selected.address, selected.family);
|
||||
}
|
||||
|
||||
async function pinnedFetch(value, options = {}) {
|
||||
const url = new URL(value);
|
||||
if (url.protocol !== 'https:') throw new Error('Pinned transport requires HTTPS');
|
||||
@@ -48,7 +54,7 @@ async function pinnedFetch(value, options = {}) {
|
||||
const request = https.request(url, {
|
||||
method: 'GET', headers: options.headers, signal: options.signal,
|
||||
agent: false,
|
||||
lookup: (_hostname, _lookupOptions, callback) => callback(null, selected.address, selected.family),
|
||||
lookup: pinnedLookup(selected),
|
||||
}, response => {
|
||||
let bytes = 0;
|
||||
const chunks = [];
|
||||
@@ -82,4 +88,4 @@ function createWeebHttp(options = {}) {
|
||||
return new SlowHttp({ ...options, transport: pinnedFetch, validateUrl: validateWeebRequest });
|
||||
}
|
||||
|
||||
module.exports = { publicAddress, validateWeebRequest, pinnedFetch, createWeebHttp };
|
||||
module.exports = { publicAddress, validateWeebRequest, pinnedLookup, pinnedFetch, createWeebHttp };
|
||||
Reference in new issue
Block a user