[Epic-ID: ODUHIGH-463][Task-ID: ODUHIGH-509]Fix for memory leak and F1AP message... 02/11202/3
authorlal.harshita <Harshita.Lal@radisys.com>
Wed, 24 May 2023 09:23:13 +0000 (14:53 +0530)
committerlal.harshita <Harshita.Lal@radisys.com>
Wed, 24 May 2023 10:21:36 +0000 (15:51 +0530)
Change-Id: Ic9b2a6e950c5bf0ca03fa60321142d1b25253094
Signed-off-by: lal.harshita <Harshita.Lal@radisys.com>
src/cu_stub/cu_f1ap_msg_hdl.c
src/du_app/du_f1ap_msg_hdl.c

index 573c3f0..39b0c1f 100644 (file)
@@ -9024,14 +9024,17 @@ uint8_t fillCuToDuContainer(CuUeCb *ueCb, CUtoDURRCInformation_t *rrcMsg)
    uint8_t ret = ROK;
    uint8_t idx;
 
-   /* UE Capabulity RAT Container List */
-   CU_ALLOC(rrcMsg->uE_CapabilityRAT_ContainerList, sizeof(UE_CapabilityRAT_ContainerList_t));
-   if(!rrcMsg->uE_CapabilityRAT_ContainerList)
+   if((ueCb->state != UE_HANDOVER_IN_PROGRESS) || ((ueCb->state == UE_HANDOVER_IN_PROGRESS) && (ueCb->hoInfo.HOType == Inter_DU_HO)))
    {
-      DU_LOG("\nERROR  -->  F1AP : Memory allocation for UE capability RAT container list failed");
-      return RFAILED;
+      /* UE Capabulity RAT Container List */
+      CU_ALLOC(rrcMsg->uE_CapabilityRAT_ContainerList, sizeof(UE_CapabilityRAT_ContainerList_t));
+      if(!rrcMsg->uE_CapabilityRAT_ContainerList)
+      {
+         DU_LOG("\nERROR  -->  F1AP : Memory allocation for UE capability RAT container list failed");
+         return RFAILED;
+      }
+      ret = fillUeCapRatContListBuf(rrcMsg->uE_CapabilityRAT_ContainerList);
    }
-   ret = fillUeCapRatContListBuf(rrcMsg->uE_CapabilityRAT_ContainerList);
 
 #if 0
 
@@ -11164,7 +11167,12 @@ uint8_t BuildAndSendUeContextModificationReq(uint32_t duId, void *cuUeCb, UeCtxt
       else if(action == RRC_RECONFIG_COMPLETE_IND)
          elementCnt = 3;
       else if((action == STOP_DATA_TX) || (action == RESTART_DATA_TX)) 
-         elementCnt = 5;
+      {
+         if(ueCb->state != UE_HANDOVER_IN_PROGRESS)
+            elementCnt = 5;
+         else
+            elementCnt = 4;
+      }
       
 #ifdef NR_DRX
       if(DRX_TO_BE_RELEASE && ueCb->drxCfgPresent)
@@ -11309,11 +11317,14 @@ uint8_t BuildAndSendUeContextModificationReq(uint32_t duId, void *cuUeCb, UeCtxt
          }
 
          /* RRC delivery status request */
-         ieIdx++;
-         ueContextModifyReq->protocolIEs.list.array[ieIdx]->id = ProtocolIE_ID_id_RRCDeliveryStatusRequest;
-         ueContextModifyReq->protocolIEs.list.array[ieIdx]->criticality = Criticality_ignore;
-         ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.present = UEContextModificationRequestIEs__value_PR_RRCDeliveryStatusRequest;
-         ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.choice.RRCDeliveryStatusRequest = RRCDeliveryStatusRequest_true;
+         if(ueCb->state != UE_HANDOVER_IN_PROGRESS)
+         {
+            ieIdx++;
+            ueContextModifyReq->protocolIEs.list.array[ieIdx]->id = ProtocolIE_ID_id_RRCDeliveryStatusRequest;
+            ueContextModifyReq->protocolIEs.list.array[ieIdx]->criticality = Criticality_ignore;
+            ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.present = UEContextModificationRequestIEs__value_PR_RRCDeliveryStatusRequest;
+            ueContextModifyReq->protocolIEs.list.array[ieIdx]->value.choice.RRCDeliveryStatusRequest = RRCDeliveryStatusRequest_true;
+         }
       }
 
 #ifdef NR_DRX
index 22ee391..eeaa1d3 100644 (file)
@@ -3287,6 +3287,7 @@ uint8_t BuildRlcConfigAm(AmBearerCfg *amCfg, struct RLC_Config *rlcConfig)
    /* Fill default AM UL configuration if input pointer to DU database is NULL */
    if(amCfg == NULLP)
    {
+      
       *(rlcConfig->choice.am->ul_AM_RLC.sn_FieldLength) = SN_FIELD_LEN_12BIT; /*As per Spec 38.331, "Network configures only value size12 in SN-FieldLengthAM for SRB"*/
       rlcConfig->choice.am->ul_AM_RLC.t_PollRetransmit  = T_POLL_RETRANSMIT;
       rlcConfig->choice.am->ul_AM_RLC.pollPDU           = POLL_PDU;
@@ -16214,6 +16215,13 @@ void FreeUeContextModResp(F1AP_PDU_t *f1apMsg)
                         break;
                      case ProtocolIE_ID_id_gNB_DU_UE_F1AP_ID:
                         break;
+                     case ProtocolIE_ID_id_DUtoCURRCInformation:
+                        {
+                           DU_FREE(ueContextModifyRes->protocolIEs.list.array[ieIdx]->value.choice.DUtoCURRCInformation.\
+                              cellGroupConfig.buf, ueContextModifyRes->protocolIEs.list.array[ieIdx]->value.choice.\
+                              DUtoCURRCInformation.cellGroupConfig.size);
+                           break;
+                        }
                      case ProtocolIE_ID_id_DRBs_SetupMod_List:
                         {
                             FreeDrbSetupModList(&(ueContextModifyRes->protocolIEs.list.array[ieIdx]->\
@@ -16461,6 +16469,7 @@ uint8_t BuildAndSendUeContextModRsp(DuUeCb *ueCb)
       ret = ROK;
       break;
    }
+
    FreeUeContextModResp(f1apMsg);
    return ret;
 }