From 9b314f9f30c2fe6b8455b49b04058a6d4d939cc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Pit-Claudel?= <clement.pit-claudel@epfl.ch> Date: Fri, 27 Dec 2024 23:59:15 +0100 Subject: [PATCH] server: Detect channel closure and disconnect client Not all channel closures come with a .Close() message. Not processing channel closures meant that we left dangling channels that then created long streams of error messages every time we tried to send to them. This commit fixes that issue, but not the stack traces printed by the tests introduced in 8a6361a. Co-authored-by: @azuz. --- jvm/src/main/scala/cs214/webapp/server/web/ServerApp.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jvm/src/main/scala/cs214/webapp/server/web/ServerApp.scala b/jvm/src/main/scala/cs214/webapp/server/web/ServerApp.scala index 021e7b5..d57b4fe 100644 --- a/jvm/src/main/scala/cs214/webapp/server/web/ServerApp.scala +++ b/jvm/src/main/scala/cs214/webapp/server/web/ServerApp.scala @@ -89,6 +89,9 @@ private[web] abstract class ServerApp: case cask.Ws.Close(code, reason) => println(f"[${appInfo.id}/$instanceId/$userId] close: $code/$reason") disconnect(userId, channel) + case cask.Ws.ChannelClosed() => + println(f"[${appInfo.id}/$instanceId/$userId] channel closed") + disconnect(userId, channel) case cask.Ws.Text(data) => handleMessage(userId, ujson.read(data)) } -- GitLab