diff --git a/LXMF/LXMF.py b/LXMF/LXMF.py index 6bb5714..9a486f7 100644 --- a/LXMF/LXMF.py +++ b/LXMF/LXMF.py @@ -339,15 +339,21 @@ class LXMessage: RNS.log("Received delivery notification for "+str(self), RNS.LOG_DEBUG) self.state = LXMessage.DELIVERED - if self.__delivery_callback != None: - self.__delivery_callback(self) + if self.__delivery_callback != None and callable(self.__delivery_callback): + try: + self.__delivery_callback(self) + except Exception as e: + RNS.log("An error occurred in the external delivery callback for "+str(message), RNS.LOG_ERROR) def __mark_propagated(self, receipt = None): RNS.log("Received propagation success notification for "+str(self), RNS.LOG_DEBUG) self.state = LXMessage.SENT - if self.__delivery_callback != None: - self.__delivery_callback(self) + if self.__delivery_callback != None and callable(self.__delivery_callback): + try: + self.__delivery_callback(self) + except Exception as e: + RNS.log("An error occurred in the external delivery callback for "+str(message), RNS.LOG_ERROR) def __resource_concluded(self, resource): if resource.status == RNS.Resource.COMPLETE: @@ -1130,8 +1136,11 @@ class LXMRouter: message.transport_encrypted = False message.transport_encryption = None - if self.__delivery_callback != None: - self.__delivery_callback(message) + if self.__delivery_callback != None and callable(self.__delivery_callback): + try: + self.__delivery_callback(message) + except Exception as e: + RNS.log("An error occurred in the external delivery callback for "+str(message), RNS.LOG_ERROR) return True @@ -1593,7 +1602,7 @@ class LXMRouter: self.failed_outbound.append(lxmessage) lxmessage.state = LXMessage.FAILED - if lxmessage.failed_callback != None: + if lxmessage.failed_callback != None and callable(lxmessage.failed_callback): lxmessage.failed_callback(lxmessage) def process_outbound(self, sender = None): diff --git a/setup.py b/setup.py index e218750..8a090d1 100644 --- a/setup.py +++ b/setup.py @@ -18,6 +18,6 @@ setuptools.setup( "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", ], - install_requires=['rns>=0.3.4'], + install_requires=['rns>=0.3.6'], python_requires='>=3.6', )