[PATCH] net, dns: socket should handle its output as input
authorAdam Majer <amajer@suse.de>
Mon, 1 Aug 2022 11:16:23 +0000 (13:16 +0200)
committerJérémy Lal <kapouer@melix.org>
Fri, 12 Aug 2022 15:21:50 +0000 (16:21 +0100)
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

lib/net.js
test/parallel/parallel.status

index 8fa8a6d1366d24bd191e29634b45a6273eb84071..41401215a85960e05cfbc9462a2de8dbef8214bd 100644 (file)
@@ -1073,6 +1073,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;
@@ -1115,7 +1125,7 @@ function lookupAndConnect(self, options) {
 
   if (dns === undefined) dns = require('dns');
   const dnsopts = {
-    family: options.family,
+    family: socketToDnsFamily(options.family),
     hints: options.hints || 0
   };
 
index a340af599776729239489887aa7c2f314af3e2ce..b6977fa9c5ba37e997045bf5bd103ee5dd0e6e3f 100644 (file)
@@ -84,10 +84,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
@@ -112,12 +108,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