Skip to content

Commit d5e79a6

Browse files
herlesupreethcodebot
authored andcommitted
rrc: log error rather than throwing fatal error if invalid measurement report is received
1 parent 2619516 commit d5e79a6

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

lib/rrc/ue/rrc_measurement_types_asn1_converters.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1258,7 +1258,8 @@ inline rrc_meas_result_nr asn1_to_meas_result_nr(const asn1::rrc_nr::meas_result
12581258
return meas_result_nr;
12591259
};
12601260

1261-
inline rrc_meas_results asn1_to_measurement_results(const asn1::rrc_nr::meas_results_s& asn1_meas_results)
1261+
inline rrc_meas_results asn1_to_measurement_results(const asn1::rrc_nr::meas_results_s& asn1_meas_results,
1262+
srslog::basic_logger& logger)
12621263
{
12631264
rrc_meas_results meas_results;
12641265

@@ -1295,8 +1296,8 @@ inline rrc_meas_results asn1_to_measurement_results(const asn1::rrc_nr::meas_res
12951296
}
12961297
} else {
12971298
// error
1298-
report_fatal_error("Invalid meas result neigh cells type = {}.",
1299-
asn1_meas_results.meas_result_neigh_cells.type());
1299+
logger.error("Ignoring neighbor cell measurement. Cause: Unsupported cell type {}",
1300+
asn1_meas_results.meas_result_neigh_cells.type().to_string());
13001301
}
13011302

13021303
meas_results.meas_result_neigh_cells = meas_result_neigh_cell;

lib/rrc/ue/rrc_ue_message_handlers.cpp

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,9 +222,13 @@ void rrc_ue_impl::handle_ul_info_transfer(const ul_info_transfer_ies_s& ul_info_
222222
void rrc_ue_impl::handle_measurement_report(const asn1::rrc_nr::meas_report_s& msg)
223223
{
224224
// convert asn1 to common type
225-
rrc_meas_results meas_results = asn1_to_measurement_results(msg.crit_exts.meas_report().meas_results);
226-
// send measurement results to cell measurement manager
227-
measurement_notifier.on_measurement_report(meas_results);
225+
rrc_meas_results meas_results =
226+
asn1_to_measurement_results(msg.crit_exts.meas_report().meas_results, srslog::fetch_basic_logger("RRC"));
227+
// Send measurement results to cell measurement manager only measurements are not empty.
228+
if (meas_results.meas_result_neigh_cells.has_value() and
229+
not meas_results.meas_result_neigh_cells->meas_result_list_nr.empty()) {
230+
measurement_notifier.on_measurement_report(meas_results);
231+
}
228232
}
229233

230234
void rrc_ue_impl::handle_dl_nas_transport_message(byte_buffer nas_pdu)

tests/unittests/rrc/rrc_ue_meas_report_test.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ class rrc_ue_meas_report : public rrc_ue_test_helper, public ::testing::Test
3232
}
3333
};
3434

35-
/// Test the RRC Reestablishment
3635
TEST_F(rrc_ue_meas_report, when_dummy_meas_report_received_then_conversion_successful)
3736
{
3837
byte_buffer meas_report_pdu = generate_measurement_report_pdu();
@@ -45,7 +44,7 @@ TEST_F(rrc_ue_meas_report, when_dummy_meas_report_received_then_conversion_succe
4544
ASSERT_EQ(ul_dcch_msg.msg.c1().type().value, asn1::rrc_nr::ul_dcch_msg_type_c::c1_c_::types_opts::meas_report);
4645

4746
rrc_meas_results meas_results =
48-
asn1_to_measurement_results(ul_dcch_msg.msg.c1().meas_report().crit_exts.meas_report().meas_results);
47+
asn1_to_measurement_results(ul_dcch_msg.msg.c1().meas_report().crit_exts.meas_report().meas_results, logger);
4948

5049
// check if the meas results conversion was successful
5150
check_meas_results(meas_results);

0 commit comments

Comments
 (0)