diff --git a/srsenb/src/stack/rrc/rrc_bearer_cfg.cc b/srsenb/src/stack/rrc/rrc_bearer_cfg.cc index 934f6a068..cdaec977f 100644 --- a/srsenb/src/stack/rrc/rrc_bearer_cfg.cc +++ b/srsenb/src/stack/rrc/rrc_bearer_cfg.cc @@ -408,7 +408,7 @@ void bearer_cfg_handler::rem_gtpu_bearer(uint32_t erab_id) { auto it = erabs.find(erab_id); if (it == erabs.end()) { - logger->error("Removing erab_id=%d from GTPU", erab_id); + logger->warning("Removing erab_id=%d from GTPU", erab_id); return; } gtpu->rem_bearer(rnti, it->second.lcid); diff --git a/srsenb/src/stack/rrc/rrc_mobility.cc b/srsenb/src/stack/rrc/rrc_mobility.cc index 264eadb77..3214dca5f 100644 --- a/srsenb/src/stack/rrc/rrc_mobility.cc +++ b/srsenb/src/stack/rrc/rrc_mobility.cc @@ -916,6 +916,7 @@ bool rrc::ue::rrc_mobility::apply_ho_prep_cfg(const ho_prep_info_r8_ies_s& erabs_failed_to_setup.back().erab_id = erab.erab_id; erabs_failed_to_setup.back().cause.set_transport().value = asn1::s1ap::cause_transport_opts::transport_res_unavailable; + rrc_ue->bearer_list.release_erab(erab.erab_id); continue; } } diff --git a/srsenb/src/stack/rrc/rrc_ue.cc b/srsenb/src/stack/rrc/rrc_ue.cc index 809b6e4ff..b7c2851ca 100644 --- a/srsenb/src/stack/rrc/rrc_ue.cc +++ b/srsenb/src/stack/rrc/rrc_ue.cc @@ -1079,6 +1079,7 @@ int rrc::ue::setup_erab(uint16_t erab_ } if (bearer_list.add_gtpu_bearer(erab_id) != SRSRAN_SUCCESS) { cause.set_radio_network().value = asn1::s1ap::cause_radio_network_opts::radio_res_not_available; + bearer_list.release_erab(erab_id); return SRSRAN_ERROR; } return SRSRAN_SUCCESS;