mirror of
https://github.com/dawidd6/action-send-mail.git
synced 2026-02-08 13:12:25 +07:00
node_modules: update (#259)
Co-authored-by: dawidd6 <9713907+dawidd6@users.noreply.github.com>
This commit is contained in:
128
node_modules/nodemailer/lib/shared/index.js
generated
vendored
128
node_modules/nodemailer/lib/shared/index.js
generated
vendored
@@ -82,15 +82,22 @@ const formatDNSValue = (value, extra) => {
|
||||
return Object.assign({}, extra || {});
|
||||
}
|
||||
|
||||
let addresses = value.addresses || [];
|
||||
|
||||
// Select a random address from available addresses, or null if none
|
||||
let host = null;
|
||||
if (addresses.length === 1) {
|
||||
host = addresses[0];
|
||||
} else if (addresses.length > 1) {
|
||||
host = addresses[Math.floor(Math.random() * addresses.length)];
|
||||
}
|
||||
|
||||
return Object.assign(
|
||||
{
|
||||
servername: value.servername,
|
||||
host:
|
||||
!value.addresses || !value.addresses.length
|
||||
? null
|
||||
: value.addresses.length === 1
|
||||
? value.addresses[0]
|
||||
: value.addresses[Math.floor(Math.random() * value.addresses.length)]
|
||||
host,
|
||||
// Include all addresses for connection fallback support
|
||||
_addresses: addresses
|
||||
},
|
||||
extra || {}
|
||||
);
|
||||
@@ -151,66 +158,32 @@ module.exports.resolveHostname = (options, callback) => {
|
||||
}
|
||||
}
|
||||
|
||||
// Resolve both IPv4 and IPv6 addresses for fallback support
|
||||
let ipv4Addresses = [];
|
||||
let ipv6Addresses = [];
|
||||
let ipv4Error = null;
|
||||
let ipv6Error = null;
|
||||
|
||||
resolver(4, options.host, options, (err, addresses) => {
|
||||
if (err) {
|
||||
if (cached) {
|
||||
dnsCache.set(options.host, {
|
||||
value: cached.value,
|
||||
expires: Date.now() + (options.dnsTtl || DNS_TTL)
|
||||
});
|
||||
|
||||
return callback(
|
||||
null,
|
||||
formatDNSValue(cached.value, {
|
||||
cached: true,
|
||||
error: err
|
||||
})
|
||||
);
|
||||
}
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
if (addresses && addresses.length) {
|
||||
let value = {
|
||||
addresses,
|
||||
servername: options.servername || options.host
|
||||
};
|
||||
|
||||
dnsCache.set(options.host, {
|
||||
value,
|
||||
expires: Date.now() + (options.dnsTtl || DNS_TTL)
|
||||
});
|
||||
|
||||
return callback(
|
||||
null,
|
||||
formatDNSValue(value, {
|
||||
cached: false
|
||||
})
|
||||
);
|
||||
ipv4Error = err;
|
||||
} else {
|
||||
ipv4Addresses = addresses || [];
|
||||
}
|
||||
|
||||
resolver(6, options.host, options, (err, addresses) => {
|
||||
if (err) {
|
||||
if (cached) {
|
||||
dnsCache.set(options.host, {
|
||||
value: cached.value,
|
||||
expires: Date.now() + (options.dnsTtl || DNS_TTL)
|
||||
});
|
||||
|
||||
return callback(
|
||||
null,
|
||||
formatDNSValue(cached.value, {
|
||||
cached: true,
|
||||
error: err
|
||||
})
|
||||
);
|
||||
}
|
||||
return callback(err);
|
||||
ipv6Error = err;
|
||||
} else {
|
||||
ipv6Addresses = addresses || [];
|
||||
}
|
||||
|
||||
if (addresses && addresses.length) {
|
||||
// Combine addresses: IPv4 first, then IPv6
|
||||
let allAddresses = ipv4Addresses.concat(ipv6Addresses);
|
||||
|
||||
if (allAddresses.length) {
|
||||
let value = {
|
||||
addresses,
|
||||
addresses: allAddresses,
|
||||
servername: options.servername || options.host
|
||||
};
|
||||
|
||||
@@ -227,6 +200,25 @@ module.exports.resolveHostname = (options, callback) => {
|
||||
);
|
||||
}
|
||||
|
||||
// No addresses from resolve4/resolve6, try dns.lookup as fallback
|
||||
if (ipv4Error && ipv6Error) {
|
||||
// Both resolvers had errors
|
||||
if (cached) {
|
||||
dnsCache.set(options.host, {
|
||||
value: cached.value,
|
||||
expires: Date.now() + (options.dnsTtl || DNS_TTL)
|
||||
});
|
||||
|
||||
return callback(
|
||||
null,
|
||||
formatDNSValue(cached.value, {
|
||||
cached: true,
|
||||
error: ipv4Error
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
dns.lookup(options.host, { all: true }, (err, addresses) => {
|
||||
if (err) {
|
||||
@@ -247,19 +239,17 @@ module.exports.resolveHostname = (options, callback) => {
|
||||
return callback(err);
|
||||
}
|
||||
|
||||
let address = addresses
|
||||
? addresses
|
||||
.filter(addr => isFamilySupported(addr.family))
|
||||
.map(addr => addr.address)
|
||||
.shift()
|
||||
: false;
|
||||
// Get all supported addresses from dns.lookup
|
||||
let supportedAddresses = addresses
|
||||
? addresses.filter(addr => isFamilySupported(addr.family)).map(addr => addr.address)
|
||||
: [];
|
||||
|
||||
if (addresses && addresses.length && !address) {
|
||||
if (addresses && addresses.length && !supportedAddresses.length) {
|
||||
// there are addresses but none can be used
|
||||
console.warn(`Failed to resolve IPv${addresses[0].family} addresses with current network`);
|
||||
}
|
||||
|
||||
if (!address && cached) {
|
||||
if (!supportedAddresses.length && cached) {
|
||||
// nothing was found, fallback to cached value
|
||||
return callback(
|
||||
null,
|
||||
@@ -270,7 +260,7 @@ module.exports.resolveHostname = (options, callback) => {
|
||||
}
|
||||
|
||||
let value = {
|
||||
addresses: address ? [address] : [options.host],
|
||||
addresses: supportedAddresses.length ? supportedAddresses : [options.host],
|
||||
servername: options.servername || options.host
|
||||
};
|
||||
|
||||
@@ -286,7 +276,7 @@ module.exports.resolveHostname = (options, callback) => {
|
||||
})
|
||||
);
|
||||
});
|
||||
} catch (_err) {
|
||||
} catch (lookupErr) {
|
||||
if (cached) {
|
||||
dnsCache.set(options.host, {
|
||||
value: cached.value,
|
||||
@@ -297,11 +287,11 @@ module.exports.resolveHostname = (options, callback) => {
|
||||
null,
|
||||
formatDNSValue(cached.value, {
|
||||
cached: true,
|
||||
error: err
|
||||
error: lookupErr
|
||||
})
|
||||
);
|
||||
}
|
||||
return callback(err);
|
||||
return callback(ipv4Error || ipv6Error || lookupErr);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user