[MERGED] openbsc[master]: libmsc: annotate esme route in the sms object from deliver_t...

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Pablo Neira Ayuso gerrit-no-reply at lists.osmocom.org
Mon Sep 11 18:41:19 UTC 2017


Pablo Neira Ayuso has submitted this change and it was merged.

Change subject: libmsc: annotate esme route in the sms object from deliver_to_esme()
......................................................................


libmsc: annotate esme route in the sms object from deliver_to_esme()

Annotate this esme route, so we can use it to return -EINPROGRESS to
skip sending premature RP-ACK to the mobile station, in case we're
handling sms routes through SMPP.

Now that we have this information in place, we use it wherever possible
to avoid kludgy checks on sms->receiver.

sms_free() already releases references to this object, so we should be
fine with this.

Fixes: 4e5b90a594f9 ("libmsc: remove 'deferred' parameter in sms_route_mt_sms()")
Change-Id: Ib8a8fd9bbb0d3b6aff7931e4bacbea99d000e484
---
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
2 files changed, 12 insertions(+), 3 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Pablo Neira Ayuso: Verified



diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index ddef444..27bffc9 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -519,7 +519,10 @@
 
 	rc = sms_route_mt_sms(conn, gsms);
 
-	/* This SMS got routed through SMPP or no receiver exists. */
+	/* This SMS got routed through SMPP. */
+	if (gsms->smpp.esme)
+		return -EINPROGRESS;
+
 	if (!gsms->receiver)
 		return rc;
 
@@ -613,8 +616,10 @@
 		return gsm411_send_rp_ack(trans, rph->msg_ref);
 	else if (rc > 0)
 		return gsm411_send_rp_error(trans, rph->msg_ref, rc);
-	else
-		return rc;
+	else if (rc == -EINPROGRESS)
+		rc = 0;
+
+	return rc;
 }
 
 /* Receive a 04.11 RP-DATA message in accordance with Section 7.3.1.2 */
diff --git a/openbsc/src/libmsc/smpp_openbsc.c b/openbsc/src/libmsc/smpp_openbsc.c
index af2d1be..3fe2dfd 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -714,6 +714,10 @@
 	if (ret < 0)
 		return ret;
 
+	OSMO_ASSERT(!sms->smpp.esme);
+	smpp_esme_get(esme);
+	sms->smpp.esme = esme;
+
 	return smpp_cmd_enqueue(esme, conn->subscr, sms,
 				deliver.sequence_number);
 }

-- 
To view, visit https://gerrit.osmocom.org/3900
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ib8a8fd9bbb0d3b6aff7931e4bacbea99d000e484
Gerrit-PatchSet: 4
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Pablo Neira Ayuso <pablo at gnumonks.org>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Keith Whyte <keith at rhizomatica.org>
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>
Gerrit-Reviewer: Pablo Neira Ayuso <pablo at gnumonks.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list