smpp: fix return cause
Return cause 38 when default SMPP route is unavailable. This
is better than cause 1.
Change-Id: If3241d50a78fa611981e55fef6ae4c72b0a2a167
diff --git a/src/libmsc/smpp_smsc.c b/src/libmsc/smpp_smsc.c
index 4c2e4aa..04afc49 100644
--- a/src/libmsc/smpp_smsc.c
+++ b/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,20 @@
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;
+ if (acl)
+ return GSM48_CC_CAUSE_NETWORK_OOO;
+ else
+ return GSM48_CC_CAUSE_UNASSIGNED_NR;
}