diff --git a/src/lte/model/lte-enb-rrc.cc b/src/lte/model/lte-enb-rrc.cc index c2638f0c8..b353793d9 100644 --- a/src/lte/model/lte-enb-rrc.cc +++ b/src/lte/model/lte-enb-rrc.cc @@ -2551,7 +2551,15 @@ LteEnbRrc::HandoverLeavingTimeout (uint16_t rnti) "HandoverLeavingTimeout in unexpected state " << ToString (GetUeManager (rnti)->GetState ())); m_rrcTimeoutTrace (GetUeManager (rnti)->GetImsi (), rnti, ComponentCarrierToCellId (GetUeManager (rnti)->GetComponentCarrierId ()), "HandoverLeavingTimeout"); - RemoveUe (rnti); + /** + * Send HO cancel msg to the target eNB and release the RRC connection + * with the UE and also delete UE context at the source eNB and bearer + * info at SGW and PGW. + */ + Ptr ueManger = GetUeManager (rnti); + EpcX2Sap::HandoverCancelParams msg = ueManger->BuildHoCancelMsg (); + m_x2SapProvider->SendHandoverCancel (msg); + ueManger->SendRrcConnectionRelease (); } void diff --git a/src/lte/model/lte-ue-rrc.cc b/src/lte/model/lte-ue-rrc.cc index 12b8c47fd..53561f5fd 100644 --- a/src/lte/model/lte-ue-rrc.cc +++ b/src/lte/model/lte-ue-rrc.cc @@ -1199,9 +1199,9 @@ LteUeRrc::DoRecvRrcConnectionRelease (LteRrcSap::RrcConnectionRelease msg) m_lastRrcTransactionIdentifier = msg.rrcTransactionIdentifier; //release resources at UE - if (!m_rlfDetected) + if (!m_leaveConnectedMode) { - m_rlfDetected = true; + m_leaveConnectedMode = true; SwitchToState (CONNECTED_PHY_PROBLEM); m_rrcSapUser->SendIdealUeContextRemoveRequest (m_rnti); m_asSapUser->NotifyConnectionReleased ();