From c301ef4ea7da9efe0e494c0486ca32eea6d4ec7c Mon Sep 17 00:00:00 2001 From: Ivan Kluchnikov Date: Tue, 29 Dec 2015 19:23:58 +0300 Subject: sms: MO RP ACK and RP ERROR should be also forwarded to the sms socket --- openbsc/src/libmsc/gsm_04_11.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'openbsc') 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"); -- cgit v1.2.3