mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
net, dns: socket should handle its output as input
As a consequence of https://github.com/nodejs/node/issues/43014 , server sockets and others, once connected, report string family names. But when feeding these to Socket.connect(), it passes these to host resolution with a string for family while a numeric family is expected internally. This results in wrong hints flags to be set and resolution to fail. As solution, is to add ability to handle both numeric and string family names when doing lookup and connect. Fixes: https://github.com/nodejs/node/issues/44003 PR-URL: https://github.com/nodejs/node/pull/44083 Reviewed-By: Paolo Insogna <paolo@cowtech.it> Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
12
lib/net.js
12
lib/net.js
@@ -1110,6 +1110,16 @@ Socket.prototype.connect = function(...args) {
|
||||
return this;
|
||||
};
|
||||
|
||||
function socketToDnsFamily(family) {
|
||||
switch (family) {
|
||||
case 'IPv4':
|
||||
return 4;
|
||||
case 'IPv6':
|
||||
return 6;
|
||||
}
|
||||
|
||||
return family;
|
||||
}
|
||||
|
||||
function lookupAndConnect(self, options) {
|
||||
const { localAddress, localPort } = options;
|
||||
@@ -1152,7 +1162,7 @@ function lookupAndConnect(self, options) {
|
||||
|
||||
if (dns === undefined) dns = require('dns');
|
||||
const dnsopts = {
|
||||
family: options.family,
|
||||
family: socketToDnsFamily(options.family),
|
||||
hints: options.hints || 0
|
||||
};
|
||||
|
||||
|
||||
@@ -37,10 +37,6 @@ test-crypto-dh-stateless: SKIP
|
||||
test-crypto-keygen: SKIP
|
||||
|
||||
[$system==solaris] # Also applies to SmartOS
|
||||
# https://github.com/nodejs/node/pull/43054
|
||||
test-net-socket-connect-without-cb: SKIP
|
||||
test-net-socket-ready-without-cb: SKIP
|
||||
test-tcp-wrap-listen: SKIP
|
||||
# https://github.com/nodejs/node/issues/43446
|
||||
test-net-connect-reset-until-connected: PASS, FLAKY
|
||||
# https://github.com/nodejs/node/issues/43457
|
||||
@@ -65,12 +61,6 @@ test-worker-message-port-message-before-close: PASS,FLAKY
|
||||
# https://github.com/nodejs/node/issues/43446
|
||||
test-net-connect-reset-until-connected: PASS, FLAKY
|
||||
|
||||
[$system==aix]
|
||||
# https://github.com/nodejs/node/pull/43054
|
||||
test-net-socket-connect-without-cb: SKIP
|
||||
test-net-socket-ready-without-cb: SKIP
|
||||
test-tcp-wrap-listen: SKIP
|
||||
|
||||
[$system==ibmi]
|
||||
# https://github.com/nodejs/node/pull/30819
|
||||
test-child-process-fork-net-server: SKIP
|
||||
|
||||
Reference in New Issue
Block a user