aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/libmsc/gsm_04_11.c
diff options
context:
space:
mode:
Diffstat (limited to 'openbsc/src/libmsc/gsm_04_11.c')
-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");