forked from acouzens/open5gs
[MME] try to fix the #2287 issue
This commit is contained in:
parent
1f078cb3c6
commit
4265b2a2bc
|
@ -3596,8 +3596,9 @@ mme_bearer_t *mme_bearer_find_or_add_by_message(
|
|||
pti = message->esm.h.procedure_transaction_identity;
|
||||
ebi = message->esm.h.eps_bearer_identity;
|
||||
|
||||
ogs_debug("mme_bearer_find_or_add_by_message() [PTI:%d, EBI:%d]",
|
||||
pti, ebi);
|
||||
ogs_debug("mme_bearer_find_or_add_by_message() : "
|
||||
"ESM message type:%d, PTI:%d, EBI:%d",
|
||||
message->esm.h.message_type, pti, ebi);
|
||||
|
||||
if (ebi != OGS_NAS_EPS_BEARER_IDENTITY_UNASSIGNED) {
|
||||
bearer = mme_bearer_find_by_ue_ebi(mme_ue, ebi);
|
||||
|
@ -3736,7 +3737,11 @@ mme_bearer_t *mme_bearer_find_or_add_by_message(
|
|||
}
|
||||
|
||||
bearer = mme_default_bearer_in_sess(sess);
|
||||
ogs_assert(bearer);
|
||||
if (!bearer) {
|
||||
ogs_error("No Bearer(%d) : ESM message type:%d, PTI:%d, EBI:%d",
|
||||
mme_sess_count(mme_ue), message->esm.h.message_type, pti, ebi);
|
||||
ogs_assert_if_reached();
|
||||
}
|
||||
|
||||
return bearer;
|
||||
}
|
||||
|
|
|
@ -619,6 +619,20 @@ struct mme_ue_s {
|
|||
((__mME)->sgw_ue)->sgw_s11_teid = 0; \
|
||||
} while(0)
|
||||
|
||||
#define MME_SESS_CLEAR(__sESS) \
|
||||
do { \
|
||||
mme_ue_t *mme_ue = NULL; \
|
||||
ogs_assert(__sESS); \
|
||||
mme_ue = __sESS->mme_ue; \
|
||||
ogs_assert(mme_ue); \
|
||||
ogs_info("Removed Session: UE IMSI:[%s] APN:[%s]", \
|
||||
mme_ue->imsi_bcd, \
|
||||
sess->session ? sess->session->name : "Unknown"); \
|
||||
if (mme_sess_count(mme_ue) == 1) /* Last Session */ \
|
||||
CLEAR_SESSION_CONTEXT(mme_ue); \
|
||||
mme_sess_remove(sess); \
|
||||
} while(0)
|
||||
|
||||
#define ACTIVE_EPS_BEARERS_IS_AVAIABLE(__mME) \
|
||||
(mme_ue_have_active_eps_bearers(__mME))
|
||||
#define MME_SESSION_RELEASE_PENDING(__mME) \
|
||||
|
|
|
@ -336,7 +336,7 @@ void mme_gtp_send_delete_all_sessions(mme_ue_t *mme_ue, int action)
|
|||
if (MME_HAVE_SGW_S1U_PATH(sess)) {
|
||||
mme_gtp_send_delete_session_request(sgw_ue, sess, action);
|
||||
} else {
|
||||
mme_sess_remove(sess);
|
||||
MME_SESS_CLEAR(sess);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -745,10 +745,7 @@ void mme_s11_handle_delete_session_response(
|
|||
ogs_assert_if_reached();
|
||||
}
|
||||
|
||||
if (mme_sess_count(mme_ue) == 1) /* Last Session */
|
||||
CLEAR_SESSION_CONTEXT(mme_ue);
|
||||
|
||||
mme_sess_remove(sess);
|
||||
MME_SESS_CLEAR(sess);
|
||||
}
|
||||
|
||||
void mme_s11_handle_create_bearer_request(
|
||||
|
|
|
@ -365,7 +365,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
if (default_bearer->ebi == bearer->ebi) {
|
||||
/* if the bearer is a default bearer,
|
||||
* remove all session context linked the default bearer */
|
||||
mme_sess_remove(sess);
|
||||
MME_SESS_CLEAR(sess);
|
||||
} else {
|
||||
/* if the bearer is not a default bearer,
|
||||
* just remove the bearer context */
|
||||
|
@ -374,7 +374,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
|
||||
} else if (OGS_FSM_CHECK(&bearer->sm, esm_state_pdn_did_disconnect)) {
|
||||
ogs_assert(default_bearer->ebi == bearer->ebi);
|
||||
mme_sess_remove(sess);
|
||||
MME_SESS_CLEAR(sess);
|
||||
|
||||
} else if (OGS_FSM_CHECK(&bearer->sm, esm_state_exception)) {
|
||||
|
||||
|
@ -386,7 +386,7 @@ void mme_state_operational(ogs_fsm_t *s, mme_event_t *e)
|
|||
*
|
||||
* Just we'll remove MME session context.
|
||||
*/
|
||||
mme_sess_remove(sess);
|
||||
MME_SESS_CLEAR(sess);
|
||||
}
|
||||
|
||||
ogs_pkbuf_free(pkbuf);
|
||||
|
|
Loading…
Reference in New Issue