Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/3126

to look at the new patch set (#3).

smpp: fix return cause

Return cause 38 when default SMPP route is unavailable. This
is better than cause 1.

Change-Id: If3241d50a78fa611981e55fef6ae4c72b0a2a167
---
M openbsc/src/libmsc/gsm_04_11.c
M openbsc/src/libmsc/smpp_openbsc.c
M openbsc/src/libmsc/smpp_smsc.c
M openbsc/src/libmsc/smpp_smsc.h
4 files changed, 14 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/26/3126/3

diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index aa2030f..acf425a 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -294,6 +294,7 @@
        if (smpp_first) {
                rc = smpp_try_deliver(gsms, conn, deferred);
                if (rc == GSM411_RP_CAUSE_MO_NUM_UNASSIGNED)
+                       /* unknown subscriber, try local */
                        goto try_local;
                if (rc < 0) {
                        LOGP(DLSMS, LOGL_ERROR, "%s: SMS delivery error: %d.",
diff --git a/openbsc/src/libmsc/smpp_openbsc.c 
b/openbsc/src/libmsc/smpp_openbsc.c
index f94968a..f7d1441 100644
--- a/openbsc/src/libmsc/smpp_openbsc.c
+++ b/openbsc/src/libmsc/smpp_openbsc.c
@@ -702,17 +702,18 @@
 {
        struct osmo_esme *esme;
        struct osmo_smpp_addr dst;
+       int rc;
 
        memset(&dst, 0, sizeof(dst));
        dst.ton = sms->dst.ton;
        dst.npi = sms->dst.npi;
        memcpy(dst.addr, sms->dst.addr, sizeof(dst.addr));
 
-       esme = smpp_route(g_smsc, &dst);
-       if (!esme)
-               return GSM411_RP_CAUSE_MO_NUM_UNASSIGNED;
+       rc = smpp_route(g_smsc, &dst, &esme);
+       if (!rc)
+               rc = deliver_to_esme(esme, sms, conn, deferred);
 
-       return deliver_to_esme(esme, sms, conn, deferred);
+       return rc;
 }
 
 struct smsc *smsc_from_vty(struct vty *v)
diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c
index 48a1192..812b661 100644
--- a/openbsc/src/libmsc/smpp_smsc.c
+++ b/openbsc/src/libmsc/smpp_smsc.c
@@ -270,8 +270,7 @@
 }
 
 /*! \brief try to find a SMPP route (ESME) for given destination */
-struct osmo_esme *
-smpp_route(const struct smsc *smsc, const struct osmo_smpp_addr *dest)
+int smpp_route(const struct smsc *smsc, const struct osmo_smpp_addr *dest, 
struct osmo_esme **pesme)
 {
        struct osmo_smpp_route *r;
        struct osmo_smpp_acl *acl = NULL;
@@ -314,15 +313,17 @@
                struct osmo_esme *esme;
                DEBUGP(DSMPP, "ACL even has ESME, we can route to it!\n");
                esme = acl->esme;
-               if (esme->bind_flags & ESME_BIND_RX)
-                       return esme;
-               else
+               if (esme->bind_flags & ESME_BIND_RX) {
+                       *pesme = esme;
+                       return 0;
+               } else
                        LOGP(DSMPP, LOGL_NOTICE, "[%s] is matching route, "
                             "but not bound for Rx, discarding MO SMS\n",
                                     esme->system_id);
        }
 
-       return NULL;
+       *pesme = NULL;
+       return (acl) ? 38 /* network out of order */ : 1 /* number unsassigned 
*/;
 }
 
 
diff --git a/openbsc/src/libmsc/smpp_smsc.h b/openbsc/src/libmsc/smpp_smsc.h
index d8e82e4..c9209ef 100644
--- a/openbsc/src/libmsc/smpp_smsc.h
+++ b/openbsc/src/libmsc/smpp_smsc.h
@@ -126,8 +126,7 @@
 void smpp_esme_get(struct osmo_esme *esme);
 void smpp_esme_put(struct osmo_esme *esme);
 
-struct osmo_esme *
-smpp_route(const struct smsc *smsc, const struct osmo_smpp_addr *dest);
+int smpp_route(const struct smsc *smsc, const struct osmo_smpp_addr *dest, 
struct osmo_esme **emse);
 
 struct osmo_smpp_acl *smpp_acl_alloc(struct smsc *smsc, const char *sys_id);
 struct osmo_smpp_acl *smpp_acl_by_system_id(struct smsc *smsc,

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

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: If3241d50a78fa611981e55fef6ae4c72b0a2a167
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: dexter <pma...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder

Reply via email to