fix(diagnostic): chat_history-Render verträgt kaputte Bubbles + EHOSTUNREACH skipped TLS-Fallback
Zwei kleine Robustness-Verbesserungen: 1) chat_history-Handler im Frontend: jede Bubble jetzt in try/catch. Wenn eine Bubble bei der Render-Pipeline (escape/linkify/regex-replace) eine Exception wirft, brach die ganze for-Schleife ab und alle nachfolgenden Bubbles wurden nicht mehr in den DOM geschrieben — beim Reload sah man dann nur die ersten N Eintraege und Stefan dachte die letzten Antworten waeren weg. Jetzt: Fehler-Bubble mit "⚠ Render-Fehler" + console.error, restliche Bubbles laufen weiter durch. 2) Diagnostic-Server RVS-Reconnect: TLS-Fallback war auch bei reinen Netz-Fehlern (EHOSTUNREACH, ECONNREFUSED, ENETUNREACH, ETIMEDOUT, ENOTFOUND, EAI_AGAIN) gefeuert — bringt nichts weil der Server eh tot ist, generiert aber doppelte Reconnect-Versuche + Log-Spam. Jetzt nur noch bei wirklichen TLS/Handshake-Fehlern. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+10
-2
@@ -701,8 +701,16 @@ function connectRVS(forcePlain) {
|
||||
state.rvs.lastError = err.message;
|
||||
broadcastState();
|
||||
|
||||
// TLS Fallback
|
||||
if (useTls && RVS_TLS_FALLBACK === "true" && !fallbackTriggered) {
|
||||
// TLS-Fallback nur bei wirklichen TLS/Handshake-Fehlern.
|
||||
// Bei Netz-Problemen wie EHOSTUNREACH, ECONNREFUSED, ENETUNREACH,
|
||||
// EAI_AGAIN ist der Server eh tot — Fallback bringt nichts ausser
|
||||
// Log-Spam und doppelten Retries.
|
||||
const netErr = (err.code || err.message || "").toString();
|
||||
const isNetDown =
|
||||
/^(EHOSTUNREACH|ECONNREFUSED|ENETUNREACH|ETIMEDOUT|EAI_AGAIN|ENOTFOUND)$/.test(netErr) ||
|
||||
/EHOSTUNREACH|ECONNREFUSED|ENETUNREACH|ETIMEDOUT|EAI_AGAIN|ENOTFOUND/.test(err.message || "");
|
||||
|
||||
if (useTls && RVS_TLS_FALLBACK === "true" && !fallbackTriggered && !isNetDown) {
|
||||
fallbackTriggered = true;
|
||||
log("warn", "rvs", "TLS fehlgeschlagen — Fallback auf ws://");
|
||||
try { ws.removeAllListeners(); ws.close(); } catch (_) {}
|
||||
|
||||
Reference in New Issue
Block a user