From f4f97a67f54076f6c2b41a996cd55d081c44d56b Mon Sep 17 00:00:00 2001 From: yihaoDeng Date: Thu, 7 Sep 2023 14:24:26 +0800 Subject: [PATCH] add rpc update interface --- source/dnode/mnode/impl/src/mndUser.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/source/dnode/mnode/impl/src/mndUser.c b/source/dnode/mnode/impl/src/mndUser.c index 27d792282a..128bb9b84b 100644 --- a/source/dnode/mnode/impl/src/mndUser.c +++ b/source/dnode/mnode/impl/src/mndUser.c @@ -160,7 +160,7 @@ void destroyIpWhiteTab(SHashObj *pIpWhiteTab) { while (pIter) { SIpWhiteList *list = *(SIpWhiteList **)pIter; taosMemoryFree(list); - pIter = taosHashIterate(pIpWhiteTab, NULL); + pIter = taosHashIterate(pIpWhiteTab, pIter); } taosHashCleanup(pIpWhiteTab); @@ -1415,11 +1415,18 @@ static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) { if (pUser->pIpWhiteList->num > 0) { int idx = 0; - for (int i = 0; i < alterReq.numIpRanges; i++) { - SIpV4Range *range = &(alterReq.pIpRanges[i]); - if (!isRangeInIpWhiteList(pUser->pIpWhiteList, range)) { - // already exist, just ignore; - memcpy(&pNew->pIpRange[idx], &pUser->pIpWhiteList->pIpRange[i], sizeof(SIpV4Range)); + for (int i = 0; i < pUser->pIpWhiteList->num; i++) { + SIpV4Range *oldRange = &pUser->pIpWhiteList->pIpRange[i]; + bool found = false; + for (int j = 0; j < alterReq.numIpRanges; j++) { + SIpV4Range *range = &alterReq.pIpRanges[j]; + if (isIpRangeEqual(oldRange, range)) { + found = true; + break; + } + } + if (found == false) { + memcpy(&pNew->pIpRange[idx], oldRange, sizeof(SIpV4Range)); idx++; } }