diff options
author | Benoit Bolsee <benoit.bolsee@wtl.be> | 2017-07-05 11:46:55 +0200 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2017-07-08 10:45:08 +0000 |
commit | 21a7523fcffc0f83587f50f178c41cbed65ef9b6 (patch) | |
tree | 3837959af040688184cd8dba06259c0dff7709e8 /openbsc/src/libmsc/smpp_smsc.c | |
parent | 11acfad02a833999c37ee267864d082241a90afb (diff) |
smpp: fix return cause
Return cause 38 when default SMPP route is unavailable. This
is better than cause 1.
Change-Id: If3241d50a78fa611981e55fef6ae4c72b0a2a167
Diffstat (limited to 'openbsc/src/libmsc/smpp_smsc.c')
-rw-r--r-- | openbsc/src/libmsc/smpp_smsc.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/openbsc/src/libmsc/smpp_smsc.c b/openbsc/src/libmsc/smpp_smsc.c index 4c2e4aac8..04afc49bb 100644 --- a/openbsc/src/libmsc/smpp_smsc.c +++ b/openbsc/src/libmsc/smpp_smsc.c @@ -270,8 +270,7 @@ void smpp_esme_put(struct osmo_esme *esme) } /*! \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 @@ smpp_route(const struct smsc *smsc, const struct osmo_smpp_addr *dest) 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; } |