From 7e745793127122615cfc5c8e1ddcdc17bea8a203 Mon Sep 17 00:00:00 2001 From: xNewz Date: Tue, 30 Dec 2025 07:52:49 +0700 Subject: [PATCH] Handle websocket errors with missing messages --- server/monitor-types/websocket-upgrade.js | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/server/monitor-types/websocket-upgrade.js b/server/monitor-types/websocket-upgrade.js index c53225306..a89bb21f0 100644 --- a/server/monitor-types/websocket-upgrade.js +++ b/server/monitor-types/websocket-upgrade.js @@ -36,12 +36,23 @@ class WebSocketMonitorType extends MonitorType { }); ws.onerror = (error) => { + const invalidAcceptCodes = [ "WS_ERR_INVALID_SEC_WEBSOCKET_ACCEPT_HEADER" ]; + let message = error?.message || ""; + + // Some ws versions may not populate the message even for invalid accept headers + if (!message && invalidAcceptCodes.includes(error?.code)) { + message = "Invalid Sec-WebSocket-Accept header"; + } else if (!message) { + message = "Unknown websocket error"; + } + // Give user the choice to ignore Sec-WebSocket-Accept header - if (monitor.wsIgnoreSecWebsocketAcceptHeader && error.message === "Invalid Sec-WebSocket-Accept header") { + if (monitor.wsIgnoreSecWebsocketAcceptHeader && (message === "Invalid Sec-WebSocket-Accept header" || invalidAcceptCodes.includes(error?.code))) { resolve([ "101 - OK", 1000 ]); + return; } // Upgrade failed, return message to user - resolve([ error.message, error.code ]); + resolve([ message, error?.code ]); }; ws.onclose = (event) => {