fix(firms): retry over IPv4 when every address fails to connect

Node's network-family auto-selection gives each resolved address a short
attempt timeout. On hosts where IPv6 is unreachable, a slow IPv4 handshake
is abandoned for the IPv6 address, which fails at once, and the request
reports only `fetch failed`. Retry such failures once with a single IPv4
connection within the same deadline, and log the per-address connection
errors (never the keyed URL). Node 26 wraps the AggregateError one level
deeper, so both shapes are recognised.

Fixes #68
This commit is contained in:
Jeff Blakely committed 2026-10-12 11:53:33 -04:00
1 parent 8b8ccc9a81
commit 166aef58db
4 files changed
+245 -6

No files matched your search

+9
View File
@@ -1393,6 +1393,15 @@ throws, that source reports failure without a contradictory success entry.
The existing per-record append continues to support large feeds; sequential
fetching, trailing-24-hour filtering and partial-success caching are unchanged.
FIRMS requests retry once over IPv4 when every resolved address fails to
connect. Node's network-family auto-selection gives each address a short
attempt timeout, so on hosts where IPv6 is unreachable a slow IPv4 handshake
was abandoned and the request reported only `fetch failed` (#68). The retry
makes a single IPv4 connection within the same deadline; HTTP errors,
timeouts and DNS failures are not retried. FIRMS warnings include the
per-address connection errors and never the request URL, which embeds the
MAP_KEY.
## Installations and map-source guidance
- Keyless mapped installations use OpenFreeMap `landuse` military polygons,