diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index 958ffe2aa656bc6b8465e5d660614d95d73abe59..59c4ffad0609f5ff2007d5c85597b806374270ed 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 6b34f864ed966f516162cc180315102f0ec8b164..e60bcd66c304a55e175ceb2b6e3d19449d90d03a 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); }