提交 e0524091 编写于 作者: dengyihao's avatar dengyihao

handle except

上级 c643c482
...@@ -274,14 +274,14 @@ void* transCtxDumpVal(STransCtx* ctx, int32_t key) { ...@@ -274,14 +274,14 @@ void* transCtxDumpVal(STransCtx* ctx, int32_t key) {
if (cVal == NULL) { if (cVal == NULL) {
return NULL; return NULL;
} }
void *ret = NULL; void* ret = NULL;
(*cVal->clone)(cVal->val, &ret); (*cVal->clone)(cVal->val, &ret);
return ret; return ret;
} }
void* transCtxDumpBrokenlinkVal(STransCtx* ctx, int32_t* msgType) { void* transCtxDumpBrokenlinkVal(STransCtx* ctx, int32_t* msgType) {
void *ret = NULL; void* ret = NULL;
if (ctx->brokenVal.clone == NULL) { if (ctx->brokenVal.clone == NULL) {
return ret; return ret;
} }
(*ctx->brokenVal.clone)(ctx->brokenVal.val, &ret); (*ctx->brokenVal.clone)(ctx->brokenVal.val, &ret);
...@@ -295,6 +295,9 @@ void transQueueInit(STransQueue* queue, void (*free)(void* arg)) { ...@@ -295,6 +295,9 @@ void transQueueInit(STransQueue* queue, void (*free)(void* arg)) {
queue->free = free; queue->free = free;
} }
bool transQueuePush(STransQueue* queue, void* arg) { bool transQueuePush(STransQueue* queue, void* arg) {
if (queue->q == NULL) {
return true;
}
taosArrayPush(queue->q, &arg); taosArrayPush(queue->q, &arg);
if (taosArrayGetSize(queue->q) > 1) { if (taosArrayGetSize(queue->q) > 1) {
return false; return false;
...@@ -302,7 +305,7 @@ bool transQueuePush(STransQueue* queue, void* arg) { ...@@ -302,7 +305,7 @@ bool transQueuePush(STransQueue* queue, void* arg) {
return true; return true;
} }
void* transQueuePop(STransQueue* queue) { void* transQueuePop(STransQueue* queue) {
if (taosArrayGetSize(queue->q) == 0) { if (queue->q == NULL || taosArrayGetSize(queue->q) == 0) {
return NULL; return NULL;
} }
void* ptr = taosArrayGetP(queue->q, 0); void* ptr = taosArrayGetP(queue->q, 0);
...@@ -310,11 +313,13 @@ void* transQueuePop(STransQueue* queue) { ...@@ -310,11 +313,13 @@ void* transQueuePop(STransQueue* queue) {
return ptr; return ptr;
} }
int32_t transQueueSize(STransQueue* queue) { int32_t transQueueSize(STransQueue* queue) {
// Get size if (queue->q == NULL) {
return 0;
}
return taosArrayGetSize(queue->q); return taosArrayGetSize(queue->q);
} }
void* transQueueGet(STransQueue* queue, int i) { void* transQueueGet(STransQueue* queue, int i) {
if (taosArrayGetSize(queue->q) == 0) { if (queue->q == NULL || taosArrayGetSize(queue->q) == 0) {
return NULL; return NULL;
} }
if (i >= taosArrayGetSize(queue->q)) { if (i >= taosArrayGetSize(queue->q)) {
...@@ -326,7 +331,7 @@ void* transQueueGet(STransQueue* queue, int i) { ...@@ -326,7 +331,7 @@ void* transQueueGet(STransQueue* queue, int i) {
} }
void* transQueueRm(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; return NULL;
} }
if (i >= taosArrayGetSize(queue->q)) { if (i >= taosArrayGetSize(queue->q)) {
...@@ -338,7 +343,9 @@ void* transQueueRm(STransQueue* queue, int i) { ...@@ -338,7 +343,9 @@ void* transQueueRm(STransQueue* queue, int i) {
} }
bool transQueueEmpty(STransQueue* queue) { bool transQueueEmpty(STransQueue* queue) {
// if (queue->q == NULL) {
return true;
}
return taosArrayGetSize(queue->q) == 0; return taosArrayGetSize(queue->q) == 0;
} }
void transQueueClear(STransQueue* queue) { void transQueueClear(STransQueue* queue) {
......
...@@ -623,8 +623,6 @@ static void destroyConn(SSrvConn* conn, bool clear) { ...@@ -623,8 +623,6 @@ static void destroyConn(SSrvConn* conn, bool clear) {
return; return;
} }
transDestroyBuffer(&conn->readBuf); transDestroyBuffer(&conn->readBuf);
transQueueDestroy(&conn->srvMsgs);
if (clear) { if (clear) {
tTrace("server conn %p to be destroyed", conn); tTrace("server conn %p to be destroyed", conn);
uv_shutdown_t* req = malloc(sizeof(uv_shutdown_t)); uv_shutdown_t* req = malloc(sizeof(uv_shutdown_t));
...@@ -640,6 +638,7 @@ static void uvDestroyConn(uv_handle_t* handle) { ...@@ -640,6 +638,7 @@ static void uvDestroyConn(uv_handle_t* handle) {
tDebug("server conn %p destroy", conn); tDebug("server conn %p destroy", conn);
uv_timer_stop(&conn->pTimer); uv_timer_stop(&conn->pTimer);
transQueueDestroy(&conn->srvMsgs);
QUEUE_REMOVE(&conn->queue); QUEUE_REMOVE(&conn->queue);
free(conn->pTcp); free(conn->pTcp);
// free(conn); // free(conn);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册