From 46dd2256f572487ca02bcc459c0cff845afd4886 Mon Sep 17 00:00:00 2001 From: Jordan Ramos Date: Thu, 28 May 2026 13:44:20 -0600 Subject: [PATCH] Fix CARD production timeout with dns.setDefaultResultOrder('ipv4first') The family:4 option on individual requests wasn't sufficient. Node.js 18 needs dns.setDefaultResultOrder('ipv4first') called at module load time to prevent IPv6 resolution attempts to card.charter.com which is unreachable via IPv6 from this network. --- backend/helpers/cardApi.js | 5 +++++ backend/scripts/card-connectivity-test.js | 1 + 2 files changed, 6 insertions(+) diff --git a/backend/helpers/cardApi.js b/backend/helpers/cardApi.js index 5f3e562..35bf6b2 100644 --- a/backend/helpers/cardApi.js +++ b/backend/helpers/cardApi.js @@ -9,6 +9,11 @@ const https = require('https'); const http = require('http'); +const dns = require('dns'); + +// Force IPv4-first DNS resolution — card.charter.com has both IPv4 and IPv6 +// records but IPv6 is unreachable from this network, causing timeouts. +dns.setDefaultResultOrder('ipv4first'); // --------------------------------------------------------------------------- // Configuration — read from process.env at module load diff --git a/backend/scripts/card-connectivity-test.js b/backend/scripts/card-connectivity-test.js index bc61989..84b89dd 100644 --- a/backend/scripts/card-connectivity-test.js +++ b/backend/scripts/card-connectivity-test.js @@ -3,6 +3,7 @@ * CARD API Connectivity Test * Tests: token acquisition → teams list → sample asset lookup */ +require('dns').setDefaultResultOrder('ipv4first'); require('dotenv').config({ path: require('path').join(__dirname, '..', '.env') }); const { isConfigured, missingVars, testConnection, getTeams } = require('../helpers/cardApi');