fix: explicitly close WebSocket with code 1000 when loops end

When any of the read/write/heartbeat loops ends, we were cancelling
remaining tasks but not explicitly closing the WebSocket. This caused
the connection to be dropped with 1006 abnormal closure instead of
a clean 1000 close. The frontend then reconnected, creating a loop.
This commit is contained in:
Fusion
2026-05-24 16:08:51 +02:00
parent 116cd22ff8
commit b89fb608b6
+6
View File
@@ -100,6 +100,12 @@ async def terminal_websocket(
# Cancel remaining tasks
for task in pending:
task.cancel()
# Close WebSocket cleanly to avoid 1006 abnormal closure
try:
await websocket.close(code=1000)
except Exception:
pass
except Exception as exc:
logger.error("Terminal session error for instance %s: %s", instance_id, str(exc), exc_info=True)