diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index 958ffe2aa6..59c4ffad06 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -265,7 +265,7 @@ _RETURN: void cliHandleExcept(SCliConn* pConn) { if (transQueueEmpty(&pConn->cliMsgs)) { - if (pConn->broken == true || CONN_NO_PERSIST_BY_APP(pConn)) { + if (pConn->broken == true && CONN_NO_PERSIST_BY_APP(pConn)) { transUnrefCliHandle(pConn); return; } diff --git a/source/libs/transport/src/transSrv.c b/source/libs/transport/src/transSrv.c index 6b34f864ed..e60bcd66c3 100644 --- a/source/libs/transport/src/transSrv.c +++ b/source/libs/transport/src/transSrv.c @@ -291,7 +291,11 @@ void uvOnSendCb(uv_write_t* req, int status) { memset(&conn->regArg, 0, sizeof(conn->regArg)); } transQueuePop(&conn->srvMsgs); - free(msg); + tfree(msg); + msg = (SSrvMsg*)transQueuePop(&conn->srvMsgs); + if (msg != NULL) { + uvStartSendRespInternal(msg); + } } else { uvStartSendRespInternal(msg); }