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
master
Andre Puschmann 5 years ago
parent f25b4f17f1
commit dc4be1b856

@ -640,13 +640,20 @@ proc_outcome_t rrc::connection_request_proc::step()
// Send connectionRequest message to lower layers // Send connectionRequest message to lower layers
rrc_ptr->send_con_request(cause); rrc_ptr->send_con_request(cause);
// Save dedicatedInfoNAS SDU // Save dedicatedInfoNAS SDU, if needed
if (rrc_ptr->dedicated_info_nas.get()) { if (dedicated_info_nas.get()) {
log_h->warning("Received a new dedicatedInfoNAS SDU but there was one still in queue. Removing it.\n"); 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"); Info("Waiting for RRCConnectionSetup/Reject or expiry\n");
rrc_ptr->dedicated_info_nas = std::move(dedicated_info_nas);
state = state_t::wait_t300; state = state_t::wait_t300;
return step(); return step();

Loading…
Cancel
Save