openclaw/src/infra/bonjour-ciao.ts
cici1029 b806783e09 fix: ignore mDNS socket errors to prevent gateway crashes
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).
2026-01-29 15:10:14 +08:00

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;
}