aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/libmsc/gsm_04_11.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 5c2692944..e5063dc1b 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -633,6 +633,16 @@ static int gsm340_rx_tpdu(struct gsm_trans *trans, struct msgb *msg,
if (gsms->smpp.esme) {
return -EINPROGRESS;
}
+
+ /* This SMS got routed through SMPP, but the configured ESME was
+ * unavailable at this time. This is an OOO condition.
+ * Don't store this SMS in the database as we may never be
+ * able to deliver it. (we would need to process the stored SMS and
+ * attempt re-submission to the ESME)
+ */
+ if (rc == GSM411_RP_CAUSE_MO_NET_OUT_OF_ORDER)
+ return rc;
+
/*
* This SMS got routed through SMPP or no receiver exists.
* In any case, we store it in the database for further processing.