From daa0d8b82e22abb5c119649bad38311840651cc8 Mon Sep 17 00:00:00 2001 From: Jason Michalski Date: Thu, 9 May 2024 20:35:40 -0700 Subject: [PATCH] Fix bug sending None to subscribers. When a packet was seen twice on MQTT we would send a None packet in the uplinked packets list after the first time it was seen. --- meshview/store.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/meshview/store.py b/meshview/store.py index a3cd365..65cb400 100644 --- a/meshview/store.py +++ b/meshview/store.py @@ -16,7 +16,9 @@ async def process_envelope(topic, env): async with database.async_session() as session: result = await session.execute(select(Packet).where(Packet.id == env.packet.id)) - if not result.scalar_one_or_none(): + new_packet = False + packet = result.scalar_one_or_none() + if not packet: new_packet = True packet = Packet( id=env.packet.id, @@ -27,8 +29,7 @@ async def process_envelope(topic, env): import_time=datetime.datetime.utcnow(), ) session.add(packet) - else: - packet = None + result = await session.execute( select(PacketSeen).where( PacketSeen.packet_id == env.packet.id, @@ -87,7 +88,7 @@ async def process_envelope(topic, env): session.add(node) await session.commit() - if packet: + if new_packet: await packet.awaitable_attrs.to_node await packet.awaitable_attrs.from_node notify.notify_packet(packet.to_node_id, packet)