Skip to content

Commit 3a0b944

Browse files
committed
🦎 b01: guard map command future completion paths
1 parent aea98ed commit 3a0b944

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

roborock/devices/rpc/b01_q7_channel.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,8 @@ def find_response(response_message: RoborockMessage) -> None:
127127
return
128128

129129
if response_message.protocol == RoborockMessageProtocol.MAP_RESPONSE and response_message.payload:
130-
future.set_result(response_message.payload)
130+
if not future.done():
131+
future.set_result(response_message.payload)
131132
return
132133

133134
try:
@@ -146,12 +147,16 @@ def find_response(response_message: RoborockMessage) -> None:
146147
continue
147148
code = inner.get("code", 0)
148149
if code != 0:
149-
future.set_exception(RoborockException(f"B01 command failed with code {code} ({request_message})"))
150+
if not future.done():
151+
future.set_exception(
152+
RoborockException(f"B01 command failed with code {code} ({request_message})")
153+
)
150154
return
151155
data = inner.get("data")
152156
if isinstance(data, dict) and isinstance(data.get("payload"), str):
153157
try:
154-
future.set_result(bytes.fromhex(data["payload"]))
158+
if not future.done():
159+
future.set_result(bytes.fromhex(data["payload"]))
155160
except ValueError:
156161
pass
157162

0 commit comments

Comments
 (0)