diff --git a/source/libs/transport/src/transComm.c b/source/libs/transport/src/transComm.c index 8b668092ddc0a3f5bc267c4d213af5ba64c547ff..fd5bd1834441450fc6c44cc80216532b5bddad45 100644 --- a/source/libs/transport/src/transComm.c +++ b/source/libs/transport/src/transComm.c @@ -274,14 +274,14 @@ void* transCtxDumpVal(STransCtx* ctx, int32_t key) { if (cVal == NULL) { return NULL; } - void *ret = NULL; + void* ret = NULL; (*cVal->clone)(cVal->val, &ret); return ret; } void* transCtxDumpBrokenlinkVal(STransCtx* ctx, int32_t* msgType) { - void *ret = NULL; + void* ret = NULL; if (ctx->brokenVal.clone == NULL) { - return ret; + return ret; } (*ctx->brokenVal.clone)(ctx->brokenVal.val, &ret); @@ -295,6 +295,9 @@ void transQueueInit(STransQueue* queue, void (*free)(void* arg)) { queue->free = free; } bool transQueuePush(STransQueue* queue, void* arg) { + if (queue->q == NULL) { + return true; + } taosArrayPush(queue->q, &arg); if (taosArrayGetSize(queue->q) > 1) { return false; @@ -302,7 +305,7 @@ bool transQueuePush(STransQueue* queue, void* arg) { return true; } void* transQueuePop(STransQueue* queue) { - if (taosArrayGetSize(queue->q) == 0) { + if (queue->q == NULL || taosArrayGetSize(queue->q) == 0) { return NULL; } void* ptr = taosArrayGetP(queue->q, 0); @@ -310,11 +313,13 @@ void* transQueuePop(STransQueue* queue) { return ptr; } int32_t transQueueSize(STransQueue* queue) { - // Get size + if (queue->q == NULL) { + return 0; + } return taosArrayGetSize(queue->q); } void* transQueueGet(STransQueue* queue, int i) { - if (taosArrayGetSize(queue->q) == 0) { + if (queue->q == NULL || taosArrayGetSize(queue->q) == 0) { return NULL; } if (i >= taosArrayGetSize(queue->q)) { @@ -326,7 +331,7 @@ void* transQueueGet(STransQueue* queue, int i) { } void* transQueueRm(STransQueue* queue, int i) { - if (taosArrayGetSize(queue->q) == 0) { + if (queue->q == NULL || taosArrayGetSize(queue->q) == 0) { return NULL; } if (i >= taosArrayGetSize(queue->q)) { @@ -338,7 +343,9 @@ void* transQueueRm(STransQueue* queue, int i) { } bool transQueueEmpty(STransQueue* queue) { - // + if (queue->q == NULL) { + return true; + } return taosArrayGetSize(queue->q) == 0; } void transQueueClear(STransQueue* queue) { diff --git a/source/libs/transport/src/transSrv.c b/source/libs/transport/src/transSrv.c index 15dcc29232041dc7206e1b2b227bc3efce897b91..b4052aea46f95c67f1cfb688d822a9ecf1bdb5ca 100644 --- a/source/libs/transport/src/transSrv.c +++ b/source/libs/transport/src/transSrv.c @@ -623,8 +623,6 @@ static void destroyConn(SSrvConn* conn, bool clear) { return; } transDestroyBuffer(&conn->readBuf); - - transQueueDestroy(&conn->srvMsgs); if (clear) { tTrace("server conn %p to be destroyed", conn); uv_shutdown_t* req = malloc(sizeof(uv_shutdown_t)); @@ -640,6 +638,7 @@ static void uvDestroyConn(uv_handle_t* handle) { tDebug("server conn %p destroy", conn); uv_timer_stop(&conn->pTimer); + transQueueDestroy(&conn->srvMsgs); QUEUE_REMOVE(&conn->queue); free(conn->pTcp); // free(conn);