From f4f196e93b984031a51777b8c78ef5bad122a945 Mon Sep 17 00:00:00 2001 From: Haojun Liao Date: Thu, 11 Jun 2020 18:30:22 +0800 Subject: [PATCH] [td-225] fix invalid deref in rpc . --- src/rpc/src/rpcMain.c | 1 - src/vnode/src/vnodeRead.c | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/rpc/src/rpcMain.c b/src/rpc/src/rpcMain.c index 3bcea21a1b..91606bc608 100644 --- a/src/rpc/src/rpcMain.c +++ b/src/rpc/src/rpcMain.c @@ -393,7 +393,6 @@ void rpcSendResponse(const SRpcMsg *pRsp) { if ( pConn->inType == 0 || pConn->user[0] == 0 ) { tTrace("%s, connection is already released, rsp wont be sent", pConn->info); rpcUnlockConn(pConn); - rpcDecRef(pRpc); return; } diff --git a/src/vnode/src/vnodeRead.c b/src/vnode/src/vnodeRead.c index 17b5d17bee..0b254e0f9a 100644 --- a/src/vnode/src/vnodeRead.c +++ b/src/vnode/src/vnodeRead.c @@ -68,6 +68,7 @@ static void vnodeNotifyCurrentQhandle(void* handle, void* qhandle, int32_t vgId) killQueryMsg->header.vgId = htonl(vgId); killQueryMsg->header.contLen = htonl(sizeof(SRetrieveTableMsg)); + vTrace("QInfo:%p register qhandle to connect:%p", qhandle, handle); rpcReportProgress(handle, (char*) killQueryMsg, sizeof(SRetrieveTableMsg)); } @@ -85,7 +86,9 @@ static int32_t vnodeProcessQueryMsg(SVnodeObj *pVnode, SReadMsg *pReadMsg) { killQueryMsg->free = htons(killQueryMsg->free); killQueryMsg->qhandle = htobe64(killQueryMsg->qhandle); + vWarn("QInfo:%p connection %p broken, kill query", killQueryMsg->qhandle, pReadMsg->rpcMsg.handle); assert(pReadMsg->rpcMsg.contLen > 0 && killQueryMsg->free == 1); + qKillQuery((qinfo_t) killQueryMsg->qhandle); return TSDB_CODE_SUCCESS; } -- GitLab