aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc
diff options
context:
space:
mode:
authorIvan Kluchnikov <kluchnikovi@gmail.com>2015-12-29 19:23:58 +0300
committerIvan Kluchnikov <kluchnikovi@gmail.com>2017-02-07 18:59:55 +0300
commitc301ef4ea7da9efe0e494c0486ca32eea6d4ec7c (patch)
tree848f5263aa5000c5fa80597a942483f80449fe01 /openbsc
parent59dc70462b1a92eb329e4994c056076167ce99bb (diff)
sms: MO RP ACK and RP ERROR should be also forwarded to the sms socket
Diffstat (limited to 'openbsc')
-rw-r--r--openbsc/src/libmsc/gsm_04_11.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/openbsc/src/libmsc/gsm_04_11.c b/openbsc/src/libmsc/gsm_04_11.c
index 62b968da9..3f5a2c45b 100644
--- a/openbsc/src/libmsc/gsm_04_11.c
+++ b/openbsc/src/libmsc/gsm_04_11.c
@@ -600,6 +600,10 @@ static int gsm411_rx_rp_ack(struct msgb *msg, struct gsm_trans *trans,
{
struct gsm_sms *sms = trans->sms.sms;
+ if (trans->net->sms_client) {
+ return subscr_tx_sms_message(trans->subscr, rph);
+ }
+
/* Acnkowledgement to MT RP_DATA, i.e. the MS confirms it
* successfully received a SMS. We can now safely mark it as
* transmitted */
@@ -637,6 +641,15 @@ static int gsm411_rx_rp_error(struct msgb *msg, struct gsm_trans *trans,
subscr_name(trans->conn->subscr), cause_len, cause,
get_value_string(gsm411_rp_cause_strs, cause));
+ if (trans->net->sms_client) {
+ if (cause == GSM411_RP_CAUSE_MT_MEM_EXCEEDED) {
+ osmo_counter_inc(net->stats.sms.rp_err_mem);
+ } else {
+ osmo_counter_inc(net->stats.sms.rp_err_other);
+ }
+ return subscr_tx_sms_message(trans->subscr, rph);
+ }
+
if (!sms) {
LOGP(DLSMS, LOGL_ERROR,
"RX RP-ERR, but no sms in transaction?!?\n");