libmsc/gsm_09_11.c: inform HLR/EUSE if Paging has failed

Change-Id: Ie2ac06aadb18251310e0cfd85bb0d9865470aab7
Related: (TTCN-3) I1f53c56d569c8ac4071835685bbe3bc9e0ebd7f0
Related: OS#2931
This commit is contained in:
Vadim Yanitskiy 2019-06-16 02:35:28 +07:00
parent 805eca2b3e
commit 7480852eea
1 changed files with 17 additions and 1 deletions

View File

@ -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;