- Fix #3208 to solve MBC memleak will cause agent crash if MDS sendto() error return. - Update a part of fix #3208 to check MDS encode callback done then not need to free memory as MDS already freed. --- src/mbc/mbcsv_mds.c | 2 ++ src/mbc/mbcsv_util.c | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/src/mbc/mbcsv_mds.c b/src/mbc/mbcsv_mds.c index afaf1fd1b..2e5121cfc 100644 --- a/src/mbc/mbcsv_mds.c +++ b/src/mbc/mbcsv_mds.c @@ -37,6 +37,7 @@ #include "mbcsv.h" +extern bool mds_enc_cb_done; MDS_CLIENT_MSG_FORMAT_VER MBCSV_wrt_PEER_msg_fmt_array[MBCSV_WRT_PEER_SUBPART_VER_RANGE] = { 1 /* msg format version for subpart version */ @@ -706,6 +707,7 @@ uint32_t mbcsv_mds_enc(MDS_CLIENT_HDL yr_svc_hdl, NCSCONTEXT msg, NCS_MBCSV_MSG_SYNC_SEND_RSP) ncs_enc_append_usrbuf( uba, mm->info.peer_msg.info.client_msg.uba.start); + mds_enc_cb_done = true; break; } diff --git a/src/mbc/mbcsv_util.c b/src/mbc/mbcsv_util.c index 9ce79243f..8373b6155 100644 --- a/src/mbc/mbcsv_util.c +++ b/src/mbc/mbcsv_util.c @@ -40,6 +40,7 @@ #include "mbcsv.h" #include "base/ncssysf_mem.h" +bool mds_enc_cb_done; /**************************************************************************\ * PROCEDURE: mbcsv_rmv_reg_inst * @@ -492,6 +493,7 @@ uint32_t mbcsv_send_ckpt_data_to_all_peers(NCS_MBCSV_SEND_CKPT *msg_to_send, *uba; evt_msg.info.peer_msg.info.client_msg.uba .start = dup_ub; + mds_enc_cb_done = false; switch (msg_to_send->i_send_type) { case NCS_MBCSV_SND_SYNC: { @@ -513,8 +515,7 @@ uint32_t mbcsv_send_ckpt_data_to_all_peers(NCS_MBCSV_SEND_CKPT *msg_to_send, } tmp_ptr->ckpt_msg_sent = true; } - if ((rc != NCSCC_RC_SUCCESS) && - (rc != NCSCC_RC_REQ_TIMOUT)) { + if (rc != NCSCC_RC_SUCCESS && !mds_enc_cb_done) { m_MMGR_FREE_BUFR_LIST(dup_ub); } tmp_ptr = tmp_ptr->next; @@ -741,10 +742,12 @@ uint32_t mbcsv_send_notify_msg(uint32_t msg_dest, CKPT_INST *ckpt_inst, .uba = *uba; evt_msg.info.peer_msg.info.client_msg .uba.start = dup_ub; + mds_enc_cb_done = false; if (m_NCS_MBCSV_MDS_ASYNC_SEND( &evt_msg, ckpt_inst, - peer->peer_anchor) != NCSCC_RC_SUCCESS) + peer->peer_anchor) != NCSCC_RC_SUCCESS && + !mds_enc_cb_done) m_MMGR_FREE_BUFR_LIST(dup_ub); } } -- 2.17.1 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel