aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2019-06-16 02:35:28 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2019-06-17 21:06:43 +0700
commit7480852eea47657f551171bcb439109d7228ca5c (patch)
tree8fc34590d3be19f2de5a37b38e04bfb61c866f37
parent805eca2b3eaaf57cdecca0991e7236b5e5f9edf6 (diff)
libmsc/gsm_09_11.c: inform HLR/EUSE if Paging has failed
-rw-r--r--src/libmsc/gsm_09_11.c18
1 files changed, 17 insertions, 1 deletions
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;