Fixed ASSERT when context has already been removed

This commit is contained in:
Sukchan Lee 2022-07-19 19:42:24 +09:00
parent 668cc59f94
commit fb95f1ff71
4 changed files with 47 additions and 7 deletions

View File

@ -497,7 +497,10 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
ogs_sbi_xact_remove(sbi_xact);
sess = amf_sess_cycle(sess);
ogs_assert(sess);
if (!sess) {
ogs_error("Session has already been removed");
break;
}
amf_ue = sess->amf_ue;
ogs_assert(amf_ue);
@ -574,6 +577,12 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
case OGS_SBI_OBJ_UE_TYPE:
amf_ue = (amf_ue_t *)sbi_object;
ogs_assert(amf_ue);
amf_ue = amf_ue_cycle(amf_ue);
if (!amf_ue) {
ogs_error("UE(amf_ue) Context has already been removed");
break;
}
ogs_error("[%s] Cannot receive SBI message", amf_ue->suci);
ogs_assert(OGS_OK ==
nas_5gs_send_gmm_reject_from_sbi(amf_ue,
@ -583,6 +592,12 @@ void amf_state_operational(ogs_fsm_t *s, amf_event_t *e)
case OGS_SBI_OBJ_SESS_TYPE:
sess = (amf_sess_t *)sbi_object;
ogs_assert(sess);
sess = amf_sess_cycle(sess);
if (!sess) {
ogs_error("Session has already been removed");
break;
}
ogs_error("[%d:%d] Cannot receive SBI message",
sess->psi, sess->pti);
if (sess->payload_container_type) {

View File

@ -287,8 +287,10 @@ void ausf_state_operational(ogs_fsm_t *s, ausf_event_t *e)
ogs_sbi_xact_remove(sbi_xact);
ausf_ue = ausf_ue_cycle(ausf_ue);
ogs_assert(ausf_ue);
ogs_assert(OGS_FSM_STATE(&ausf_ue->sm));
if (!ausf_ue) {
ogs_error("UE(ausf-ue) Context has already been removed");
break;
}
e->ausf_ue = ausf_ue;
e->sbi.message = &message;

View File

@ -403,7 +403,11 @@ void pcf_state_operational(ogs_fsm_t *s, pcf_event_t *e)
ogs_sbi_xact_remove(sbi_xact);
pcf_ue = pcf_ue_cycle(pcf_ue);
ogs_assert(pcf_ue);
if (!pcf_ue) {
ogs_error("UE(pcf_ue) Context "
"has already been removed");
break;
}
e->pcf_ue = pcf_ue;
e->sbi.message = &message;
@ -427,7 +431,10 @@ void pcf_state_operational(ogs_fsm_t *s, pcf_event_t *e)
ogs_sbi_xact_remove(sbi_xact);
sess = pcf_sess_cycle(sess);
ogs_assert(sess);
if (!sess) {
ogs_error("Session has already been removed");
break;
}
pcf_ue = sess->pcf_ue;
ogs_assert(pcf_ue);
@ -475,7 +482,10 @@ void pcf_state_operational(ogs_fsm_t *s, pcf_event_t *e)
ogs_sbi_xact_remove(sbi_xact);
sess = pcf_sess_cycle(sess);
ogs_assert(sess);
if (!sess) {
ogs_error("Session has already been removed");
break;
}
pcf_ue = sess->pcf_ue;
ogs_assert(pcf_ue);
@ -568,12 +578,22 @@ void pcf_state_operational(ogs_fsm_t *s, pcf_event_t *e)
case OGS_SBI_OBJ_UE_TYPE:
pcf_ue = (pcf_ue_t *)sbi_object;
ogs_assert(pcf_ue);
pcf_ue = pcf_ue_cycle(pcf_ue);
if (!pcf_ue) {
ogs_error("UE(pcf_ue) has already been removed");
break;
}
ogs_error("[%s] Cannot receive SBI message", pcf_ue->supi);
break;
case OGS_SBI_OBJ_SESS_TYPE:
sess = (pcf_sess_t *)sbi_object;
ogs_assert(sess);
sess = pcf_sess_cycle(sess);
if (!sess) {
ogs_error("Session has already been removed");
break;
}
ogs_error("[%d] Cannot receive SBI message", sess->psi);
break;

View File

@ -321,7 +321,10 @@ void udm_state_operational(ogs_fsm_t *s, udm_event_t *e)
ogs_sbi_xact_remove(sbi_xact);
udm_ue = udm_ue_cycle(udm_ue);
ogs_assert(udm_ue);
if (!udm_ue) {
ogs_error("UE(udm_ue) Context has already been removed");
break;
}
e->udm_ue = udm_ue;
e->sbi.message = &message;