From 7f9497026db84d81e957b9c50f15b57e493b104f Mon Sep 17 00:00:00 2001 From: puddly <32534428+puddly@users.noreply.github.com> Date: Mon, 3 Feb 2025 18:34:35 -0500 Subject: [PATCH] Handle relays too --- bellows/zigbee/application.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bellows/zigbee/application.py b/bellows/zigbee/application.py index 28cdc1a6..e3d4e651 100644 --- a/bellows/zigbee/application.py +++ b/bellows/zigbee/application.py @@ -2,6 +2,7 @@ import asyncio from collections import defaultdict, deque +import contextlib from datetime import datetime, timezone import logging import os @@ -946,9 +947,10 @@ async def send_packet(self, packet: zigpy.types.ZigbeePacket) -> None: ) finally: if route_status_handler_future is not None: - self._request_status_handlers[packet.dst.address].remove( - route_status_handler_future - ) + with contextlib.suppress(ValueError): + self._request_status_handlers[packet.dst.address].remove( + route_status_handler_future + ) async def permit(self, time_s: int = 60, node: t.EmberNodeId = None) -> None: """Permit joining.""" @@ -1067,6 +1069,12 @@ def handle_route_record( ) self.handle_relays(nwk=nwk, relays=relays) + handlers = self._request_status_handlers[nwk] + if not handlers: + return + + handlers.popleft().set_result(None) + def handle_route_error(self, status: t.sl_Status, nwk: t.EmberNodeId) -> None: LOGGER.debug("Processing route error: status=%s, nwk=%s", status, nwk)