fix overwriting dedicated_info_nas in connection_request_proc

this fixes an issue in the step() function of the connection_request_proc
in which the dedicated_info_nas message was passed to RRC without
checking if its actually valid or not, i.e. contains a message at all.

because this check was missing and the step() function could be called
multiple-times, the function would overwrite the dedicated_info_nas
in RRC, and therefore causing the connection setup complete to fail
This commit is contained in:
Andre Puschmann 2020-02-14 11:55:31 +01:00
parent f25b4f17f1
commit dc4be1b856
1 changed files with 11 additions and 4 deletions

View File

@ -640,13 +640,20 @@ proc_outcome_t rrc::connection_request_proc::step()
// Send connectionRequest message to lower layers
rrc_ptr->send_con_request(cause);
// Save dedicatedInfoNAS SDU
if (rrc_ptr->dedicated_info_nas.get()) {
log_h->warning("Received a new dedicatedInfoNAS SDU but there was one still in queue. Removing it.\n");
// Save dedicatedInfoNAS SDU, if needed
if (dedicated_info_nas.get()) {
if (rrc_ptr->dedicated_info_nas.get()) {
Warning("Received a new dedicatedInfoNAS SDU but there was one still in queue. Removing it.\n");
rrc_ptr->dedicated_info_nas.reset();
}
Debug("Updating dedicatedInfoNAS in RRC\n");
rrc_ptr->dedicated_info_nas = std::move(dedicated_info_nas);
} else {
Debug("dedicatedInfoNAS has already been provided to RRC.\n");
}
Info("Waiting for RRCConnectionSetup/Reject or expiry\n");
rrc_ptr->dedicated_info_nas = std::move(dedicated_info_nas);
state = state_t::wait_t300;
return step();