diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index f899896410..4117ffc924 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -2481,7 +2481,9 @@ FORCE_INLINE bool cliTryUpdateEpset(SCliReq* pReq, STransMsg* pResp) { pResp->info.hasEpSet = 1; - transCreateReqEpsetFromUserEpset(&epset, &ctx->epSet); + if (transCreateReqEpsetFromUserEpset(&epset, &ctx->epSet) != 0) { + return false; + } return true; } @@ -2510,7 +2512,9 @@ bool cliResetEpset(SReqCtx* pCtx, STransMsg* pResp, bool hasEpSet) { transPrintEpSet((SEpSet*)pCtx->epSet); transPrintEpSet(&epSet); - transCreateReqEpsetFromUserEpset(&epSet, &pCtx->epSet); + if (transCreateReqEpsetFromUserEpset(&epSet, &pCtx->epSet) != 0) { + tDebug("failed to create req epset from user epset"); + } noDelay = false; } else { if (pCtx->epsetRetryCnt >= pCtx->epSet->numOfEps) { @@ -2537,7 +2541,9 @@ bool cliResetEpset(SReqCtx* pCtx, STransMsg* pResp, bool hasEpSet) { tDebug("epset not equal, retry new epset2"); transPrintEpSet((SEpSet*)pCtx->epSet); transPrintEpSet(&epSet); - transCreateReqEpsetFromUserEpset(&epSet, &pCtx->epSet); + if (transCreateReqEpsetFromUserEpset(&epSet, &pCtx->epSet) != 0) { + tError("failed to create req epset from user epset"); + } noDelay = false; } else { if (pCtx->epsetRetryCnt >= pCtx->epSet->numOfEps) { @@ -2721,7 +2727,9 @@ int32_t cliNotifyImplCb(SCliConn* pConn, SCliReq* pReq, STransMsg* pResp) { pSyncMsg->hasEpSet = 1; SEpSet epset = {0}; - transCreateUserEpsetFromReqEpset(pCtx->epSet, &epset); + if (transCreateUserEpsetFromReqEpset(pCtx->epSet, &epset) != 0) { + tError("failed to create user epset from req epset"); + } epsetAssign(&pSyncMsg->epSet, &epset); } TAOS_UNUSED(tsem2_post(pSyncMsg->pSem)); @@ -2734,14 +2742,18 @@ int32_t cliNotifyImplCb(SCliConn* pConn, SCliReq* pReq, STransMsg* pResp) { tGTrace("%s conn %p handle resp", CONN_GET_INST_LABEL(pConn), pConn); if (pResp->info.hasEpSet == 1) { SEpSet epset = {0}; - transCreateUserEpsetFromReqEpset(pCtx->epSet, &epset); + if (transCreateUserEpsetFromReqEpset(pCtx->epSet, &epset) != 0) { + tError("failed to create user epset from req epset"); + } pInst->cfp(pInst->parent, pResp, &epset); } else { if (!cliIsEpsetUpdated(pResp->code, pCtx)) { pInst->cfp(pInst->parent, pResp, NULL); } else { SEpSet epset = {0}; - transCreateUserEpsetFromReqEpset(pCtx->epSet, &epset); + if (transCreateUserEpsetFromReqEpset(pCtx->epSet, &epset) != 0) { + tError("failed to create user epset from req epset"); + } pInst->cfp(pInst->parent, pResp, &epset); } } diff --git a/source/libs/transport/src/transComm.c b/source/libs/transport/src/transComm.c index bba1e41683..3c42a1ec83 100644 --- a/source/libs/transport/src/transComm.c +++ b/source/libs/transport/src/transComm.c @@ -944,7 +944,6 @@ int32_t transCreateReqEpsetFromUserEpset(const SEpSet* pEpset, SReqEpSet** pReqE if (pReqEpSet == NULL) { return TSDB_CODE_INVALID_PARA; } - taosMemoryFree(*pReqEpSet); int32_t size = sizeof(SReqEpSet) + sizeof(SEp) * pEpset->numOfEps; SReqEpSet* pReq = (SReqEpSet*)taosMemoryCalloc(1, size); @@ -952,6 +951,8 @@ int32_t transCreateReqEpsetFromUserEpset(const SEpSet* pEpset, SReqEpSet** pReqE return TSDB_CODE_OUT_OF_MEMORY; } memcpy((char*)pReq, (char*)pEpset, size); + + taosMemoryFree(*pReqEpSet); *pReqEpSet = pReq; return TSDB_CODE_SUCCESS; }