From afc30dacd6ebc1a2b6711ab211bb5e00f1b03428 Mon Sep 17 00:00:00 2001
From: Marcel van der Veldt <m.vanderveldt@outlook.com>
Date: Tue, 6 Feb 2024 17:25:09 +0100
Subject: [PATCH 1/2] log non-text messages in websocket api

---
 matter_server/client/connection.py     |  5 ++++-
 matter_server/server/client_handler.py | 13 +++++++++----
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/matter_server/client/connection.py b/matter_server/client/connection.py
index 2dcb5a4d..dcc424b6 100644
--- a/matter_server/client/connection.py
+++ b/matter_server/client/connection.py
@@ -1,4 +1,5 @@
 """Logic to manage the WebSocket connection to the Matter server."""
+
 from __future__ import annotations
 
 import asyncio
@@ -121,7 +122,9 @@ async def receive_message_or_raise(self) -> MessageType:
             raise ConnectionFailed()
 
         if ws_msg.type != WSMsgType.TEXT:
-            raise InvalidMessage(f"Received non-Text message: {ws_msg.type}")
+            raise InvalidMessage(
+                f"Received non-Text message: {ws_msg.type}: {ws_msg.data}"
+            )
 
         try:
             msg = parse_message(json_loads(ws_msg.data))
diff --git a/matter_server/server/client_handler.py b/matter_server/server/client_handler.py
index 9f9d460a..07ad24b9 100644
--- a/matter_server/server/client_handler.py
+++ b/matter_server/server/client_handler.py
@@ -1,4 +1,5 @@
 """Logic to handle a client connected over WebSockets."""
+
 from __future__ import annotations
 
 import asyncio
@@ -67,7 +68,7 @@ async def disconnect(self) -> None:
 
     async def handle_client(self) -> web.WebSocketResponse:
         """Handle a websocket response."""
-        # pylint: disable=too-many-branches
+        # pylint: disable=too-many-branches,too-many-statements
         request = self.request
         wsock = self.wsock
         try:
@@ -91,13 +92,17 @@ async def handle_client(self) -> web.WebSocketResponse:
             while not wsock.closed:
                 msg = await wsock.receive()
 
-                if msg.type in (WSMsgType.CLOSE, WSMsgType.CLOSING):
+                if msg.type in (WSMsgType.CLOSED, WSMsgType.CLOSE, WSMsgType.CLOSING):
                     break
 
-                if msg.type != WSMsgType.TEXT:
-                    disconnect_warn = "Received non-Text message."
+                if msg.type == WSMsgType.ERROR:
+                    disconnect_warn = f"Received error message: {msg.data}"
                     break
 
+                if msg.type != WSMsgType.TEXT:
+                    self._logger.debug("Received non-Text message: %s", msg.data)
+                    continue
+
                 self._logger.debug("Received: %s", msg.data)
 
                 try:

From 55af648c00641efbc6f370595c6a6edf3aeb78c9 Mon Sep 17 00:00:00 2001
From: Marcel van der Veldt <marcel.vanderveldt@nabucasa.com>
Date: Tue, 6 Feb 2024 17:54:08 +0100
Subject: [PATCH 2/2] Update matter_server/server/client_handler.py

Co-authored-by: Stefan Agner <stefan@agner.ch>
---
 matter_server/server/client_handler.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/matter_server/server/client_handler.py b/matter_server/server/client_handler.py
index 07ad24b9..42541748 100644
--- a/matter_server/server/client_handler.py
+++ b/matter_server/server/client_handler.py
@@ -100,7 +100,7 @@ async def handle_client(self) -> web.WebSocketResponse:
                     break
 
                 if msg.type != WSMsgType.TEXT:
-                    self._logger.debug("Received non-Text message: %s", msg.data)
+                    self._logger.warning("Received non-Text message: %s", msg.data)
                     continue
 
                 self._logger.debug("Received: %s", msg.data)