From 61cda3a0aad9ca13fc6ff12ebde6a6787f8c8531 Mon Sep 17 00:00:00 2001
From: "tomita.y" <tomita.y@jp.fujitsu.com>
Date: Mon, 18 Mar 2019 17:13:39 +0900
Subject: [PATCH] Fix: reestablishment issue(SRB2 NULL)

---
 openair2/RRC/LTE/MESSAGES/asn1_msg.c |  1 +
 openair2/RRC/LTE/rrc_eNB.c           | 31 ++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/openair2/RRC/LTE/MESSAGES/asn1_msg.c b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
index ecb21dae6cf..9303fb79f11 100644
--- a/openair2/RRC/LTE/MESSAGES/asn1_msg.c
+++ b/openair2/RRC/LTE/MESSAGES/asn1_msg.c
@@ -4072,6 +4072,7 @@ do_RRCConnectionReestablishment(
   LTE_DL_CCCH_Message_t dl_ccch_msg;
   LTE_RRCConnectionReestablishment_t *rrcConnectionReestablishment = NULL;
   int i = 0;
+  ue_context_pP->ue_context.reestablishment_xid = Transaction_id;
   LTE_SRB_ToAddModList_t **SRB_configList2 = NULL;
   SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[Transaction_id];
 
diff --git a/openair2/RRC/LTE/rrc_eNB.c b/openair2/RRC/LTE/rrc_eNB.c
index db5541d8bbb..6e92e6ef1e7 100644
--- a/openair2/RRC/LTE/rrc_eNB.c
+++ b/openair2/RRC/LTE/rrc_eNB.c
@@ -1241,6 +1241,34 @@ void release_UE_in_freeList(module_id_t mod_id) {
   }
 }
 
+int rrc_eNB_previous_SRB2(rrc_eNB_ue_context_t*         ue_context_pP)
+{
+  struct SRB_ToAddMod                *SRB2_config = NULL;
+  uint8_t i;
+  SRB_ToAddModList_t*                 SRB_configList = ue_context_pP->ue_context.SRB_configList;
+  SRB_ToAddModList_t**                SRB_configList2 = &ue_context_pP->ue_context.SRB_configList2[ue_context_pP->ue_context.reestablishment_xid];
+  if (*SRB_configList2 != NULL) {
+    if((*SRB_configList2)->list.count!=0){
+      LOG_D(RRC, "rrc_eNB_previous_SRB2 SRB_configList2(%p) count is %d\n           SRB_configList2->list.array[0] addr is %p",
+              SRB_configList2, (*SRB_configList2)->list.count,  (*SRB_configList2)->list.array[0]);
+    }
+    for (i = 0; (i < (*SRB_configList2)->list.count) && (i < 3); i++) {
+      if ((*SRB_configList2)->list.array[i]->srb_Identity == 2 ){
+        SRB2_config = (*SRB_configList2)->list.array[i];
+        break;
+      }
+    }
+  }else{
+    LOG_E(RRC, "rrc_eNB_previous_SRB2 SRB_configList2 NULL\n");
+  }
+
+  if (SRB2_config != NULL) {
+    ASN_SEQUENCE_ADD(&SRB_configList->list, SRB2_config);
+  }else{
+    LOG_E(RRC, "rrc_eNB_previous_SRB2 SRB2_config NULL\n");
+  }
+  return 0;
+}
 //-----------------------------------------------------------------------------
 /*
 * Process the rrc connection setup complete message from UE (SRB1 Active)
@@ -7009,6 +7037,7 @@ rrc_eNB_decode_ccch(
                PROTOCOL_RRC_CTXT_UE_FMT" RCConnectionReestablishmentComplete(Previous) don't receive, delete the c-rnti UE\n",
                PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
          RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1000;
+         rrc_eNB_previous_SRB2(ue_context_p);
       }
       //previous rnti
       rnti_t previous_rnti = 0;
@@ -7033,6 +7062,7 @@ rrc_eNB_decode_ccch(
                   PROTOCOL_RRC_CTXT_UE_FMT" RCConnectionReestablishmentComplete(Previous) don't receive, delete the Previous UE\n",
                   PROTOCOL_RRC_CTXT_UE_ARGS(ctxt_pP));
             RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 1000;
+          rrc_eNB_previous_SRB2(ue_context_p);
         }
           }
 
@@ -7749,6 +7779,7 @@ rrc_eNB_decode_dcch(
           }
 
           RC.mac[ctxt_pP->module_id]->UE_list.UE_sched_ctrl[UE_id].ue_reestablishment_reject_timer = 0;
+          ue_context_p->ue_context.reestablishment_xid = -1;
 
           if (ul_dcch_msg->message.choice.c1.choice.rrcConnectionReestablishmentComplete.criticalExtensions.present ==
               LTE_RRCConnectionReestablishmentComplete__criticalExtensions_PR_rrcConnectionReestablishmentComplete_r8) {
-- 
GitLab