libmsc/gsm_09_11.c: inform HLR/EUSE if Paging has failed
Change-Id: Ie2ac06aadb18251310e0cfd85bb0d9865470aab7
Related: (TTCN-3) I1f53c56d569c8ac4071835685bbe3bc9e0ebd7f0
Related: OS#2931
diff --git a/src/libmsc/gsm_09_11.c b/src/libmsc/gsm_09_11.c
index 51cb2fb..f58c106 100644
--- a/src/libmsc/gsm_09_11.c
+++ b/src/libmsc/gsm_09_11.c
@@ -297,9 +297,25 @@
/* 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;