File c-ares-fixes.patch of Package nodejs20

Index: node-v20.10.0/test/parallel/test-dns-resolveany-bad-ancount.js
===================================================================
--- node-v20.10.0.orig/test/parallel/test-dns-resolveany-bad-ancount.js
+++ node-v20.10.0/test/parallel/test-dns-resolveany-bad-ancount.js
@@ -7,6 +7,8 @@ const dgram = require('dgram');
 const dnsPromises = dns.promises;
 
 const server = dgram.createSocket('udp4');
+const resolver = new dns.Resolver({ timeout: 100, tries: 1 });
+const resolverPromises = new dnsPromises.Resolver({ timeout: 100, tries: 1 });
 
 server.on('message', common.mustCall((msg, { address, port }) => {
   const parsed = dnstools.parseDNSPacket(msg);
@@ -18,25 +20,29 @@ server.on('message', common.mustCall((ms
     questions: parsed.questions,
     answers: { type: 'A', address: '1.2.3.4', ttl: 123, domain },
   });
-  // Overwrite the # of answers with 2, which is incorrect.
+  // Overwrite the # of answers with 2, which is incorrect. The response is
+  // discarded in c-ares >= 1.21.0. This is the reason why a small timeout is
+  // used in the `Resolver` constructor. See
+  // https://github.com/nodejs/node/pull/50743#issue-1994909204
   buf.writeUInt16LE(2, 6);
   server.send(buf, port, address);
 }, 2));
 
 server.bind(0, common.mustCall(async () => {
   const address = server.address();
-  dns.setServers([`127.0.0.1:${address.port}`]);
+  resolver.setServers([`127.0.0.1:${address.port}`]);
+  resolverPromises.setServers([`127.0.0.1:${address.port}`]);
 
-  dnsPromises.resolveAny('example.org')
+  resolverPromises.resolveAny('example.org')
     .then(common.mustNotCall())
     .catch(common.expectsError({
-      code: 'EBADRESP',
+      code: /^(?:EBADRESP|ETIMEOUT)$/,
       syscall: 'queryAny',
       hostname: 'example.org'
     }));
 
-  dns.resolveAny('example.org', common.mustCall((err) => {
-    assert.strictEqual(err.code, 'EBADRESP');
+  resolver.resolveAny('example.org', common.mustCall((err) => {
+    assert.notStrictEqual(err.code, 'SUCCESS');
     assert.strictEqual(err.syscall, 'queryAny');
     assert.strictEqual(err.hostname, 'example.org');
     const descriptor = Object.getOwnPropertyDescriptor(err, 'message');
openSUSE Build Service is sponsored by