From db78dd6453d3989c45f27e64453482edb7fafae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?mustafa=20ta=C5=9Fl=C4=B1?= Date: Mon, 3 Nov 2025 17:10:07 +0300 Subject: [PATCH] Fix long-submit timeout errback for multipart SubmitSm transactions --- jasmin/protocols/smpp/protocol.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/jasmin/protocols/smpp/protocol.py b/jasmin/protocols/smpp/protocol.py index 0ab3bd969..651e8cc0e 100644 --- a/jasmin/protocols/smpp/protocol.py +++ b/jasmin/protocols/smpp/protocol.py @@ -169,6 +169,11 @@ def cancelLongSubmitSmTransactions(self, err): # Do errback txn.ackDeferred.errback(err) + def onLongSubmitSmTransactionTimeout(self, reqPDU, timeout): + txn = self.closeLongSubmitSmTransaction(reqPDU.LongSubmitSm['msg_ref_num']) + errMsg = 'Long submit_sm transaction timed out after %s secs: %s' % (timeout, reqPDU) + txn.ackDeferred.errback(SMPPRequestTimoutError(errMsg)) + def startLongSubmitSmTransaction(self, reqPDU, timeout): if reqPDU.LongSubmitSm['msg_ref_num'] in self.longSubmitSmTxns: self.log.error( @@ -181,7 +186,7 @@ def startLongSubmitSmTransaction(self, reqPDU, timeout): # Create callback deferred ackDeferred = defer.Deferred() # Create response timer - timer = reactor.callLater(timeout, self.onResponseTimeout, reqPDU, timeout) + timer = reactor.callLater(timeout, self.onLongSubmitSmTransactionTimeout, reqPDU, timeout) # Save transaction self.longSubmitSmTxns[reqPDU.LongSubmitSm['msg_ref_num']] = { 'txn': SMPPOutboundTxn(reqPDU, timer, ackDeferred),