From 62200cdee5d22d7edc4454198c92ecd27ddce59b Mon Sep 17 00:00:00 2001
From: Robert Schmidt <robert.schmidt@openairinterface.org>
Date: Fri, 2 Feb 2024 09:30:27 +0100
Subject: [PATCH] RRC transactions: mark "no action"

---
 openair2/RRC/NR/nr_rrc_defs.h | 1 +
 openair2/RRC/NR/rrc_gNB.c     | 7 ++++++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/openair2/RRC/NR/nr_rrc_defs.h b/openair2/RRC/NR/nr_rrc_defs.h
index 1db349f003..a0e7fa2b03 100644
--- a/openair2/RRC/NR/nr_rrc_defs.h
+++ b/openair2/RRC/NR/nr_rrc_defs.h
@@ -224,6 +224,7 @@ typedef struct drb_s {
 } drb_t;
 
 typedef enum {
+  RRC_ACTION_NONE, /* no transaction ongoing */
   RRC_SETUP,
   RRC_SETUP_FOR_REESTABLISHMENT,
   RRC_REESTABLISH,
diff --git a/openair2/RRC/NR/rrc_gNB.c b/openair2/RRC/NR/rrc_gNB.c
index b054b2c58b..7cd37f08ba 100644
--- a/openair2/RRC/NR/rrc_gNB.c
+++ b/openair2/RRC/NR/rrc_gNB.c
@@ -1434,11 +1434,16 @@ static void handle_rrcReconfigurationComplete(const protocol_ctxt_t *const ctxt_
     case RRC_DEDICATED_RECONF:
       /* do nothing */
       break;
+    case RRC_ACTION_NONE:
+      LOG_E(RRC, "UE %d: Received RRC Reconfiguration Complete with xid %d while no transaction is ongoing\n", UE->rrc_ue_id, xid);
+      successful_reconfig = false;
+      break;
     default:
-      LOG_E(RRC, "Received unexpected transaction type %d for xid %d\n", UE->xids[xid], xid);
+      LOG_E(RRC, "UE %d: Received unexpected transaction type %d for xid %d\n", UE->rrc_ue_id, UE->xids[xid], xid);
       successful_reconfig = false;
       break;
   }
+  UE->xids[xid] = RRC_ACTION_NONE;
 
   gNB_RRC_INST *rrc = RC.nrrrc[0];
   f1_ue_data_t ue_data = cu_get_f1_ue_data(UE->rrc_ue_id);
-- 
2.26.2