From: Adam Majer Date: Mon, 1 Aug 2022 11:16:23 +0000 (+0200) Subject: [PATCH] net, dns: socket should handle its output as input X-Git-Tag: archive/raspbian/18.12.1+dfsg-2+rpi1~1^2^2^2^2~1 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=36ed4a3f4eeaa96f926cd4909ccaf72d7a461da4;p=nodejs.git [PATCH] 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 Gbp-Pq: Topic build Gbp-Pq: Name getaddrinfo_no_iface.patch --- diff --git a/lib/net.js b/lib/net.js index 06b318b3f..7f3c51e5f 100644 --- a/lib/net.js +++ b/lib/net.js @@ -1072,6 +1072,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; @@ -1114,7 +1124,7 @@ function lookupAndConnect(self, options) { if (dns === undefined) dns = require('dns'); const dnsopts = { - family: options.family, + family: socketToDnsFamily(options.family), hints: options.hints || 0 }; diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index c8401933e..24c8035bf 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -82,10 +82,6 @@ test-crypto-keygen: SKIP test-debug-args: PASS,FLAKY [$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 @@ -110,12 +106,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