- 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
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel