From 3948c9a1875417179b1d0ec4c1298ea0230a422f Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Sat, 18 Jan 2025 21:36:08 +0100 Subject: [PATCH] Added message reject on too large transfer size --- LXMF/LXMRouter.py | 10 +++++++++- LXMF/LXMessage.py | 8 ++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/LXMF/LXMRouter.py b/LXMF/LXMRouter.py index 2ec4e8e..79678c6 100644 --- a/LXMF/LXMRouter.py +++ b/LXMF/LXMRouter.py @@ -1777,7 +1777,9 @@ class LXMRouter: self.failed_outbound.append(lxmessage) - lxmessage.state = LXMessage.FAILED + if lxmessage.state != LXMessage.REJECTED: + lxmessage.state = LXMessage.FAILED + if lxmessage.failed_callback != None and callable(lxmessage.failed_callback): lxmessage.failed_callback(lxmessage) @@ -1871,6 +1873,12 @@ class LXMRouter: if lxmessage.failed_callback != None and callable(lxmessage.failed_callback): lxmessage.failed_callback(lxmessage) + elif lxmessage.state == LXMessage.REJECTED: + RNS.log("Receiver rejected "+str(lxmessage)+", removing from outbound queue", RNS.LOG_DEBUG) + self.pending_outbound.remove(lxmessage) + if lxmessage.failed_callback != None and callable(lxmessage.failed_callback): + lxmessage.failed_callback(lxmessage) + else: RNS.log("Outbound processing for "+str(lxmessage)+" to "+RNS.prettyhexrep(lxmessage.get_destination().hash), RNS.LOG_DEBUG) diff --git a/LXMF/LXMessage.py b/LXMF/LXMessage.py index 316e798..2342708 100644 --- a/LXMF/LXMessage.py +++ b/LXMF/LXMessage.py @@ -16,9 +16,10 @@ class LXMessage: SENDING = 0x02 SENT = 0x04 DELIVERED = 0x08 + REJECTED = 0xFD CANCELLED = 0xFE FAILED = 0xFF - states = [GENERATING, OUTBOUND, SENDING, SENT, DELIVERED, CANCELLED, FAILED] + states = [GENERATING, OUTBOUND, SENDING, SENT, DELIVERED, REJECTED, CANCELLED, FAILED] UNKNOWN = 0x00 PACKET = 0x01 @@ -565,7 +566,10 @@ class LXMessage: if resource.status == RNS.Resource.COMPLETE: self.__mark_delivered() else: - if self.state != LXMessage.CANCELLED: + if resource.status == RNS.Resource.REJECTED: + self.state = LXMessage.REJECTED + + elif self.state != LXMessage.CANCELLED: resource.link.teardown() self.state = LXMessage.OUTBOUND