Extended ignoreCiaoCancellationRejection to also handle announcement socket errors which are non-fatal and caused by network interface issues. Previously, these unhandled promise rejections would crash the gateway every ~2 minutes when mDNS announcements failed due to EAFNOSUPPORT socket errors. The fix allows the gateway to continue running normally even when mDNS discovery is unavailable, since mDNS is only used for local network discovery and not required for core gateway functionality. Testing: Gateway remained stable for 150+ seconds after fix, compared to crashing every ~120 seconds before (macOS 15.2 with HTTP_PROXY).
19 lines
769 B
TypeScript
19 lines
769 B
TypeScript
import { logDebug } from "../logger.js";
|
|
|
|
import { formatBonjourError } from "./bonjour-errors.js";
|
|
|
|
export function ignoreCiaoCancellationRejection(reason: unknown): boolean {
|
|
const message = formatBonjourError(reason).toUpperCase();
|
|
// Ignore ciao cancellation rejections (normal cleanup)
|
|
if (message.includes("CIAO ANNOUNCEMENT CANCELLED")) {
|
|
logDebug(`bonjour: ignoring unhandled ciao rejection: ${formatBonjourError(reason)}`);
|
|
return true;
|
|
}
|
|
// Ignore socket errors from mDNS announcements (non-fatal, can happen due to network issues)
|
|
if (message.includes("ANNOUNCEMENT FAILED") && message.includes("SOCKET ERRORS")) {
|
|
logDebug(`bonjour: ignoring mDNS socket error: ${formatBonjourError(reason)}`);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|