From 4b6e0db0bf9f9d0f6fb9f3ddb7bd1ab2d22847c3 Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Mon, 26 Feb 2024 12:47:59 +0200 Subject: [PATCH] ha_ws: prevent endless loop with WAC enabled If a command learned by WAC is no longer supported by Home Assistant, we end up in an endless loop. Prevent this by adding a "final" boolean to the connmap. --- app/internal/command_endpoints/ha_ws.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/internal/command_endpoints/ha_ws.py b/app/internal/command_endpoints/ha_ws.py index 3a8a5c2..455efa8 100644 --- a/app/internal/command_endpoints/ha_ws.py +++ b/app/internal/command_endpoints/ha_ws.py @@ -104,12 +104,14 @@ async def cb_msg(self, msg): self.log.debug(self.connmap[id]) if self.app.wac_enabled: + if self.connmap[id]["final"]: + return wac_success, wac_command = wac_search(command) if wac_success: jsondata = self.connmap[id]["jsondata"] jsondata["text"] = wac_command - self.send(jsondata, ws) + self.send(jsondata, ws, True) self.connmap.pop(id) return else: @@ -130,11 +132,12 @@ async def cb_msg(self, msg): def parse_response(self, response): return None - def send(self, jsondata, ws): + def send(self, jsondata, ws, final=False): id = int(time.time() * 1000) if id not in self.connmap: self.connmap[id] = { + 'final': final, 'jsondata': copy(jsondata), 'ws': ws, }