Don't Store an SMS in the database when the ESME is not Bound

We may never be able to deliver this SMS if it depends on the ESME, as we will
not resubmit the SMS to the ESME. Better to reject it at this time and have the MS
try again later.

Change-Id: I2c50904349dd4ed229b60b8468d776b817c0bd44
Related: OS#4740
diff --git a/src/libmsc/gsm_04_11.c b/src/libmsc/gsm_04_11.c
index 5c26929..e5063dc 100644
--- a/src/libmsc/gsm_04_11.c
+++ b/src/libmsc/gsm_04_11.c
@@ -633,6 +633,16 @@
 	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.