mirror of https://github.com/PentHertz/srsLTE.git
remove UE on S1AP Release Request if MME S1AP UE ID hasn't been assigned yet
This commit is contained in:
parent
3c4512cdd2
commit
6e7d992552
|
@ -386,8 +386,10 @@ void rrc::ue::handle_rrc_con_req(rrc_conn_request_s* msg)
|
||||||
for (auto& user : parent->users) {
|
for (auto& user : parent->users) {
|
||||||
if (user.first != rnti && user.second->has_tmsi && user.second->mmec == mmec && user.second->m_tmsi == m_tmsi) {
|
if (user.first != rnti && user.second->has_tmsi && user.second->mmec == mmec && user.second->m_tmsi == m_tmsi) {
|
||||||
parent->logger.info("RRC connection request: UE context already exists. M-TMSI=%d", m_tmsi);
|
parent->logger.info("RRC connection request: UE context already exists. M-TMSI=%d", m_tmsi);
|
||||||
parent->s1ap->user_release(rnti, asn1::s1ap::cause_radio_network_opts::radio_conn_with_ue_lost);
|
if (parent->s1ap->user_release(rnti, asn1::s1ap::cause_radio_network_opts::radio_conn_with_ue_lost)) {
|
||||||
parent->rem_user_thread(user.first);
|
// Do not wait for MME response
|
||||||
|
parent->rem_user_thread(user.first);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -418,7 +418,7 @@ bool s1ap::user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_r
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (u->was_uectxtrelease_requested()) {
|
if (u->was_uectxtrelease_requested() or not u->ctxt.mme_ue_s1ap_id.has_value()) {
|
||||||
logger.warning("UE context for RNTI:0x%x is in zombie state. Releasing...", rnti);
|
logger.warning("UE context for RNTI:0x%x is in zombie state. Releasing...", rnti);
|
||||||
users.erase(u);
|
users.erase(u);
|
||||||
rrc->release_ue(rnti);
|
rrc->release_ue(rnti);
|
||||||
|
@ -428,10 +428,7 @@ bool s1ap::user_release(uint16_t rnti, asn1::s1ap::cause_radio_network_e cause_r
|
||||||
cause_c cause;
|
cause_c cause;
|
||||||
cause.set_radio_network().value = cause_radio.value;
|
cause.set_radio_network().value = cause_radio.value;
|
||||||
|
|
||||||
if (u->ctxt.mme_ue_s1ap_id.has_value()) {
|
return u->send_uectxtreleaserequest(cause);
|
||||||
return u->send_uectxtreleaserequest(cause);
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool s1ap::user_exists(uint16_t rnti)
|
bool s1ap::user_exists(uint16_t rnti)
|
||||||
|
|
Loading…
Reference in New Issue