diff options
Diffstat (limited to 'openbsc')
-rw-r--r-- | openbsc/src/libmsc/gsm_04_11.c | 13 |
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"); |