From 0a7e4a170662cd38ef0c8564660f2214d115360a Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Thu, 8 Aug 2024 10:08:00 +0800 Subject: [PATCH] fix mem leak --- source/libs/transport/src/transCli.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index 4b324e52c6..dc0af79676 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -1620,15 +1620,17 @@ static void cliHandleFreeById(SCliMsg* pMsg, SCliThrd* pThrd) { if (size == 0) { // already recv, and notify upper layer TAOS_CHECK_GOTO(TSDB_CODE_REF_INVALID_ID, NULL, _exception); - return; } else { - while (T_REF_VAL_GET(conn) >= 1) transUnrefCliHandle(conn); + while (T_REF_VAL_GET(conn) >= 1) { + transUnrefCliHandle(conn); + } + return; } - return; _exception: tDebug("already free conn %p by id %" PRId64"", conn, refId); (void)transReleaseExHandle(transGetRefMgt(), refId); + (void)transRemoveExHandle(transGetRefMgt(), refId); destroyCmsg(pMsg); } @@ -2225,6 +2227,10 @@ static FORCE_INLINE void destroyCmsgAndAhandle(void* param) { pThrd->destroyAhandleFp(pMsg->ctx->ahandle); } + if (pMsg->msg.info.handle !=0) { + transReleaseExHandle(transGetRefMgt(), (int64_t)pMsg->msg.info.handle); + } + transDestroyConnCtx(pMsg->ctx); transFreeMsg(pMsg->msg.pCont); taosMemoryFree(pMsg);