nas: when receiving detach request, don't enter plmn_search automatically

this patch fixes an issue with TC_9_3_1_17 after the "send attach in RRC connected" issue
has been fixed. The TC failed because the UE would always attempt to re-attach, even
after receiving an explicit detach request WITHOUT re-attach from the network.

According to TS 24.301 Sec. 5.5.2.3.2 the handling of that message largely depends
on the detach cause sent by network. Since we don't currently parse and handle
that the simplest solution here is to just enter deregistered:::null.

The patch is also part of the fix for issue #2237
This commit is contained in:
Andre Puschmann 2021-01-28 09:42:02 +01:00
parent 2576ada9e1
commit cc750d96ee
1 changed files with 4 additions and 2 deletions

View File

@ -136,7 +136,7 @@ void nas::run_tti()
// TODO Make sure cell selection is finished after transitioning from another state (if required)
// Make sure the RRC is finished transitioning to RRC Idle
if (reattach_timer.is_running()) {
logger.debug("Waiting for reatach timer to expire to attach again.");
logger.debug("Waiting for re-attach timer to expire to attach again.");
return;
}
switch (state.get_deregistered_substate()) {
@ -1481,7 +1481,9 @@ void nas::parse_detach_request(uint32_t lcid, unique_byte_buffer_t pdu)
case emm_state_t::state_t::registered:
// send accept and leave state
send_detach_accept();
enter_emm_deregistered(emm_state_t::deregistered_substate_t::plmn_search);
// TODO: add parsing and correct handling of EMM cause for detach (Sec. 5.5.2.3.2)
enter_emm_deregistered(emm_state_t::deregistered_substate_t::null);
// schedule reattach if required
if (detach_request.detach_type.type_of_detach == LIBLTE_MME_TOD_DL_REATTACH_REQUIRED) {