Skip to content

Commit

Permalink
net, dns: socket should handle its output as input
Browse files Browse the repository at this point in the history
As a consequence of #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: #44003
PR-URL: #44083
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
  • Loading branch information
AdamMajer authored and danielleadams committed Aug 11, 2022
1 parent 29bbabd commit e6a47e8
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
12 changes: 11 additions & 1 deletion lib/net.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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
};

Expand Down
10 changes: 0 additions & 10 deletions test/parallel/parallel.status
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down

0 comments on commit e6a47e8

Please sign in to comment.