Fix the MME crash during HandoverCancel (#855)

This commit is contained in:
Sukchan Lee 2021-03-18 22:59:22 +09:00
parent 22b09443ce
commit dc474329e2
5 changed files with 615 additions and 223 deletions

View File

@ -1810,7 +1810,7 @@ ogs_pkbuf_t *s1ap_build_handover_command(enb_ue_t *source_ue)
}
ogs_pkbuf_t *s1ap_build_handover_preparation_failure(
enb_ue_t *source_ue, S1AP_Cause_t *cause)
enb_ue_t *source_ue, S1AP_Cause_PR group, long cause)
{
S1AP_S1AP_PDU_t pdu;
S1AP_UnsuccessfulOutcome_t *unsuccessfulOutcome = NULL;
@ -1822,7 +1822,7 @@ ogs_pkbuf_t *s1ap_build_handover_preparation_failure(
S1AP_Cause_t *Cause = NULL;
ogs_assert(source_ue);
ogs_assert(cause);
ogs_assert(group);
ogs_debug("HandoverPreparationFailure");
@ -1872,13 +1872,12 @@ ogs_pkbuf_t *s1ap_build_handover_preparation_failure(
ogs_debug(" ENB_UE_S1AP_ID[%d] MME_UE_S1AP_ID[%d]",
source_ue->enb_ue_s1ap_id, source_ue->mme_ue_s1ap_id);
ogs_debug(" Group[%d] Cause[%d]",
cause->present, (int)cause->choice.radioNetwork);
ogs_debug(" Group[%d] Cause[%d]", group, (int)cause);
*MME_UE_S1AP_ID = source_ue->mme_ue_s1ap_id;
*ENB_UE_S1AP_ID = source_ue->enb_ue_s1ap_id;
Cause->present = cause->present;
Cause->choice.radioNetwork = cause->choice.radioNetwork;
Cause->present = group;
Cause->choice.radioNetwork = cause;
return ogs_s1ap_encode(&pdu);
}

View File

@ -63,7 +63,7 @@ ogs_pkbuf_t *s1ap_build_path_switch_failure(
ogs_pkbuf_t *s1ap_build_handover_command(enb_ue_t *source_ue);
ogs_pkbuf_t *s1ap_build_handover_preparation_failure(
enb_ue_t *source_ue, S1AP_Cause_t *cause);
enb_ue_t *source_ue, S1AP_Cause_PR group, long cause);
ogs_pkbuf_t *s1ap_build_handover_request(
enb_ue_t *target_ue, S1AP_HandoverType_t *handovertype, S1AP_Cause_t *cause,

File diff suppressed because it is too large Load Diff

View File

@ -417,15 +417,15 @@ void s1ap_send_handover_command(enb_ue_t *source_ue)
}
void s1ap_send_handover_preparation_failure(
enb_ue_t *source_ue, S1AP_Cause_t *cause)
enb_ue_t *source_ue, S1AP_Cause_PR group, long cause)
{
int rv;
ogs_pkbuf_t *s1apbuf = NULL;
ogs_assert(source_ue);
ogs_assert(cause);
ogs_assert(group);
s1apbuf = s1ap_build_handover_preparation_failure(source_ue, cause);
s1apbuf = s1ap_build_handover_preparation_failure(source_ue, group, cause);
ogs_expect_or_return(s1apbuf);
rv = s1ap_send_to_enb_ue(source_ue, s1apbuf);

View File

@ -68,7 +68,7 @@ void s1ap_send_path_switch_ack(mme_ue_t *mme_ue);
void s1ap_send_handover_command(enb_ue_t *source_ue);
void s1ap_send_handover_preparation_failure(
enb_ue_t *source_ue, S1AP_Cause_t *cause);
enb_ue_t *source_ue, S1AP_Cause_PR group, long cause);
void s1ap_send_handover_request(
enb_ue_t *source_ue, mme_enb_t *target_enb,