From e0c3356dbb2a72c91d40d2ad378affb73ab50918 Mon Sep 17 00:00:00 2001 From: Nikos Makris Date: Mon, 10 Oct 2016 19:43:26 +0300 Subject: [PATCH] Fixed memory management issues --- openair2/LAYER2/PDCP_v10.1.0/pdcp.c | 15 ++----- openair2/LAYER2/PROTO_AGENT/proto_agent.c | 14 +++--- .../LAYER2/PROTO_AGENT/proto_agent_common.c | 43 +++++++++++-------- 3 files changed, 33 insertions(+), 39 deletions(-) diff --git a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c index 24c3ccdc42..19b1666426 100755 --- a/openair2/LAYER2/PDCP_v10.1.0/pdcp.c +++ b/openair2/LAYER2/PDCP_v10.1.0/pdcp.c @@ -396,6 +396,9 @@ boolean_t pdcp_data_req( proto_agent_send_rlc_data_req(ctxt_pP, srb_flagP, MBMS_FLAG_NO, rb_idP, muiP, confirmP, pdcp_pdu_size, pdcp_pdu_p); //rlc_status = ack_result; + // free the memory for this block + free_mem_block(pdcp_pdu_p); + printf("Response is %u\n", ack_result_nikos); rlc_status = ack_result_nikos; } @@ -454,18 +457,6 @@ boolean_t pdcp_data_req( } }*/ - //starting async -// const Enb_properties_array_t *enb_properties_p = NULL; -// Enb_properties_array_t *enb_properties_p = NULL; -// enb_properties_p = malloc(sizeof(Enb_properties_array_t)); -// memset(enb_properties_p, 0, sizeof(Enb_properties_array_t)); -// printf("starting the client\n\n"); - -// printf("Starting the async client\\n"); -// new_thread(proto_server_start, NULL); -// enb_properties_p = enb_config_get(); - -// proto_agent_start(ctxt_pP->module_id, enb_properties_p); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_PDCP_DATA_REQ,VCD_FUNCTION_OUT); diff --git a/openair2/LAYER2/PROTO_AGENT/proto_agent.c b/openair2/LAYER2/PROTO_AGENT/proto_agent.c index 069dab1c95..89c2b6c596 100644 --- a/openair2/LAYER2/PROTO_AGENT/proto_agent.c +++ b/openair2/LAYER2/PROTO_AGENT/proto_agent.c @@ -86,7 +86,7 @@ void *receive_thread(void *args) { LOG_E(PROTO_AGENT,"msg to send back is NULL\n"); } - free(data); + //free(data); if (msg != NULL){ if (proto_agent_msg_send(d->enb_id, PROTO_AGENT_DEFAULT, msg, size, priority)) { @@ -373,12 +373,10 @@ proto_agent_send_rlc_data_req(const protocol_ctxt_t* const ctxt_pP, const srb_fl int msgsize = 0; if (init_msg != NULL) { - printf("Will pack the message\n"); + msg = proto_agent_pack_message(init_msg, &msgsize); - printf("Will free the message\n"); - free(init_msg); - + LOG_I(PROTO_AGENT,"Server sending the pdcp data_req message over the async channel\n"); if (msg!=NULL) @@ -441,7 +439,7 @@ proto_agent_send_pdcp_data_ind(const protocol_ctxt_t* const ctxt_pP, const srb_f printf("Will pack the message \n"); msg = proto_agent_pack_message(init_msg, &msgsize); printf("packed the message \n"); - free(init_msg); + //free(init_msg); if (msg!=NULL) { @@ -496,7 +494,7 @@ proto_server_receive(void) } else { - free(data); + //free(data); ser_msg = proto_agent_pack_message(msg, &size); } @@ -554,7 +552,7 @@ proto_client_receive(void) } else { - free(data); + //free(data); ser_msg = proto_agent_pack_message(msg, &size); } diff --git a/openair2/LAYER2/PROTO_AGENT/proto_agent_common.c b/openair2/LAYER2/PROTO_AGENT/proto_agent_common.c index 8bb8d8de66..216d5ad0b4 100644 --- a/openair2/LAYER2/PROTO_AGENT/proto_agent_common.c +++ b/openair2/LAYER2/PROTO_AGENT/proto_agent_common.c @@ -242,13 +242,13 @@ int proto_agent_destroy_pdcp_data_req(Protocol__FlexsplitMessage *msg) { if(msg->msg_case != PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_REQ_MSG) goto error; - //free(msg->data_req_msg->header); - //free(msg->data_req_msg->pdcp_data->fsp_pdu->fsp_pdu_data.data); - //free(msg->data_req_msg->pdcp_data->fsp_pdu); - //free(msg->data_req_msg->pdcp_data->fsp_ctxt); - //free(msg->data_req_msg->pdcp_data); - //free(msg->data_req_msg); - //free(msg); + free(msg->data_req_msg->header); + free(msg->data_req_msg->pdcp_data->fsp_pdu->fsp_pdu_data.data); + free(msg->data_req_msg->pdcp_data->fsp_pdu); + free(msg->data_req_msg->pdcp_data->fsp_ctxt); + free(msg->data_req_msg->pdcp_data); + free(msg->data_req_msg); + free(msg); return 0; error: @@ -355,6 +355,8 @@ int proto_agent_pdcp_data_req_ack(mid_t mod_id, const void *params, Protocol__Fl return 0; error: + if (pdcp_pdu_p != NULL) + free_mem_block(pdcp_pdu_p); if(header != NULL) free(header); if(ack!=NULL) @@ -370,9 +372,9 @@ int proto_agent_destroy_pdcp_data_req_ack(Protocol__FlexsplitMessage *msg) { if(msg->msg_case != PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_REQ_ACK) goto error; - //free(msg->data_req_ack->header); - //free(msg->data_req_ack); - //free(msg); + free(msg->data_req_ack->header); + free(msg->data_req_ack); + free(msg); return 0; error: @@ -385,9 +387,9 @@ int proto_agent_destroy_pdcp_data_ind(Protocol__FlexsplitMessage *msg) { if(msg->msg_case != PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_IND_MSG) goto error; - //free(msg->data_req_ack->header); - //free(msg->data_req_ack); - //free(msg); + free(msg->data_req_ack->header); + free(msg->data_req_ack); + free(msg); return 0; error: @@ -591,6 +593,9 @@ int proto_agent_pdcp_data_ind_ack(mid_t mod_id, const void *params, Protocol__Fl free(ack); if(*msg != NULL) free(*msg); + if (pdcp_pdu_p != NULL) + free_mem_block(pdcp_pdu_p); + LOG_E(MAC, "%s: an error occured\n", __FUNCTION__); return -1; @@ -601,9 +606,9 @@ int proto_agent_destroy_pdcp_data_ind_ack(Protocol__FlexsplitMessage *msg) { if(msg->msg_case != PROTOCOL__FLEXSPLIT_MESSAGE__MSG_DATA_IND_ACK) goto error; - //free(msg->data_req_ack->header); - //free(msg->data_req_ack); - //free(msg); + free(msg->data_req_ack->header); + free(msg->data_req_ack); + free(msg); return 0; error: @@ -764,9 +769,9 @@ int proto_agent_destroy_echo_reply(Protocol__FlexsplitMessage *msg) { if(msg->msg_case != PROTOCOL__FLEXSPLIT_MESSAGE__MSG_ECHO_REPLY_MSG) goto error; - //free(msg->echo_reply_msg->header); - //free(msg->echo_reply_msg); - //free(msg); + free(msg->echo_reply_msg->header); + free(msg->echo_reply_msg); + free(msg); return 0; error: