From 2045fd4605de1589b7950145daa9271e6f2e9f50 Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Fri, 1 Sep 2023 20:11:48 +0800 Subject: [PATCH] add rpc update interface --- source/libs/transport/src/transSvr.c | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/source/libs/transport/src/transSvr.c b/source/libs/transport/src/transSvr.c index 5c2dd6b84c..c98f5a3543 100644 --- a/source/libs/transport/src/transSvr.c +++ b/source/libs/transport/src/transSvr.c @@ -189,11 +189,31 @@ static void uvHandleActivityTimeout(uv_timer_t* handle) { tDebug("%p timeout since no activity", conn); } +static bool uvCheckIp(char* range, char* ip) { + // impl later + return strcmp(range, ip) == 0; +} +static bool uvFilteByWhiteList(SWorkThrd* pThrd, char* user, uint32_t ip) { + // impl check + SArray** pWhite = taosHashGet(pThrd->pWhiteList, user, strlen(user)); + if (pWhite == NULL || *pWhite == NULL) { + return true; + } + bool valid = false; + char userIp[64] = {0}; + tinet_ntoa(userIp, ip); + for (int i = 0; i < taosArrayGetSize(*pWhite); i++) { + char* range = taosArrayGetP(*pWhite, i); + valid = uvCheckIp(range, userIp); + if (valid) { + return valid; + } + } + return valid; +} static bool uvHandleReq(SSvrConn* pConn) { STrans* pTransInst = pConn->pTransInst; SWorkThrd* pThrd = pConn->hostThrd; - - STransMsgHead* pHead = NULL; @@ -202,6 +222,9 @@ static bool uvHandleReq(SSvrConn* pConn) { tError("%s conn %p read invalid packet", transLabel(pTransInst), pConn); return false; } + if (uvFilteByWhiteList(pThrd, pHead->user, pConn->clientIp) == false) { + return false; + } if (transDecompressMsg((char**)&pHead, msgLen) < 0) { tError("%s conn %p recv invalid packet, failed to decompress", transLabel(pTransInst), pConn); @@ -1208,6 +1231,7 @@ void uvHandleRegister(SSvrMsg* msg, SWorkThrd* thrd) { void uvHandleUpdate(SSvrMsg* msg, SWorkThrd* thrd) { // update white ip bool ret = (msg->func)(msg->arg); + taosMemoryFree(msg); return; }