From a123706300a15a81e6c00f182eeba625aff9b4d0 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Thu, 26 Sep 2024 18:15:02 +0800 Subject: [PATCH] fix invalid free --- source/libs/transport/src/transCli.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index ea77dbf432..e794fbcd7f 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -493,6 +493,12 @@ void cliHandleResp(SCliConn* conn) { } if (CONN_NO_PERSIST_BY_APP(conn)) { + SExHandle* exh = transAcquireExHandle(transGetRefMgt(), refId); + if (exh != NULL) { + exh->handle = NULL; + } + TAOS_UNUSED(transReleaseExHandle(transGetRefMgt(), refId)); + return addConnToPool(pThrd->pool, conn); } @@ -1059,6 +1065,7 @@ static void cliDestroyConn(SCliConn* conn, bool clear) { } conn->list = NULL; + TAOS_UNUSED(transReleaseExHandle(transGetRefMgt(), conn->refId)); TAOS_UNUSED(transReleaseExHandle(transGetRefMgt(), conn->refId)); TAOS_UNUSED(transRemoveExHandle(transGetRefMgt(), conn->refId)); conn->refId = -1; @@ -1087,6 +1094,7 @@ static void cliDestroy(uv_handle_t* handle) { TAOS_UNUSED(atomic_sub_fetch_32(&pThrd->connCount, 1)); if (conn->refId > 0) { + TAOS_UNUSED(transReleaseExHandle(transGetRefMgt(), conn->refId)); TAOS_UNUSED(transReleaseExHandle(transGetRefMgt(), conn->refId)); TAOS_UNUSED(transRemoveExHandle(transGetRefMgt(), conn->refId)); }