diff --git a/source/libs/transport/src/transCli.c b/source/libs/transport/src/transCli.c index c960cb4c63c3278de3dad337dbf933e0cf500432..453515024058e90532c2463b190401d30f17f20c 100644 --- a/source/libs/transport/src/transCli.c +++ b/source/libs/transport/src/transCli.c @@ -601,7 +601,7 @@ static void cliDestroyConn(SCliConn* conn, bool clear) { QUEUE_INIT(&conn->conn); transRemoveExHandle(conn->refId); if (clear) { - if (uv_is_active((uv_handle_t*)conn->stream)) { + if (!uv_is_closing((uv_handle_t*)conn->stream)) { uv_close((uv_handle_t*)conn->stream, cliDestroy); } else { cliDestroy((uv_handle_t*)conn->stream); diff --git a/source/libs/transport/src/transSvr.c b/source/libs/transport/src/transSvr.c index f1937c93fe0b95496b75a1617928c2f120160515..8bd1c090426d1438ecce597844550530f0cc6fc9 100644 --- a/source/libs/transport/src/transSvr.c +++ b/source/libs/transport/src/transSvr.c @@ -431,10 +431,14 @@ static void uvPrepareSendData(SSvrMsg* smsg, uv_buf_t* wb) { } static void uvStartSendRespInternal(SSvrMsg* smsg) { + SSvrConn* pConn = smsg->pConn; + if (pConn->broken) { + return; + } + uv_buf_t wb; uvPrepareSendData(smsg, &wb); - SSvrConn* pConn = smsg->pConn; // uv_timer_stop(&pConn->pTimer); uv_write(&pConn->pWriter, (uv_stream_t*)pConn->pTcp, &wb, 1, uvOnSendCb); }