From 7480852eea47657f551171bcb439109d7228ca5c Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Sun, 16 Jun 2019 02:35:28 +0700 Subject: [PATCH] libmsc/gsm_09_11.c: inform HLR/EUSE if Paging has failed Change-Id: Ie2ac06aadb18251310e0cfd85bb0d9865470aab7 Related: (TTCN-3) I1f53c56d569c8ac4071835685bbe3bc9e0ebd7f0 Related: OS#2931 --- src/libmsc/gsm_09_11.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c index 51cb2fb85..f58c106aa 100644 --- a/src/libmsc/gsm_09_11.c +++ b/src/libmsc/gsm_09_11.c @@ -297,9 +297,25 @@ static void ss_paging_cb(struct msc_a *msc_a, struct gsm_trans *trans) /* Count established network-initiated NC SS/USSD sessions */ rate_ctr_inc(&net->msc_ctrs->ctr[MSC_CTR_NC_SS_MT_ESTABLISHED]); } else { + struct osmo_gsup_message gsup_msg; + LOG_MSC_A_CAT(msc_a, DSS, LOGL_DEBUG, "Paging expired\n"); - /* TODO: inform HLR about this failure */ + gsup_msg = (struct osmo_gsup_message){ + .message_class = OSMO_GSUP_MESSAGE_CLASS_USSD, + .message_type = OSMO_GSUP_MSGT_PROC_SS_ERROR, + + .session_state = OSMO_GSUP_SESSION_STATE_END, + .session_id = trans->callref, + /* FIXME: we need message class specific cause values */ + .cause = GMM_CAUSE_IMPL_DETACHED, + }; + + /* Fill in subscriber's IMSI */ + OSMO_STRLCPY_ARRAY(gsup_msg.imsi, trans->vsub->imsi); + + /* Inform HLR/EUSE about the failure */ + gsup_client_mux_tx(trans->net->gcm, &gsup_msg); msgb_free(trans->ss.msg); trans->ss.msg = NULL;