From 86c1a2e1404e9b1c8fd8b371e3b9cff463db7c58 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Fri, 3 Jan 2025 21:33:46 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=AC=E7=A7=BB=E7=BE=A4=E4=B8=BB=E6=97=B6?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=E7=9B=AE=E6=A0=87=E7=94=A8=E6=88=B7=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=9C=A8=E7=BE=A4=E7=BB=84=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistence/MemoryMessagesStore.java | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 134ccd2f..663caa07 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -2266,15 +2266,29 @@ public class MemoryMessagesStore implements IMessagesStore { } //check the new owner is in member list? is that necessary? - long updateDt = System.currentTimeMillis(); - groupInfo = groupInfo.toBuilder().setOwner(newOwner).setUpdateDt(updateDt).setMemberUpdateDt(updateDt).build(); - mIMap.set(groupId, groupInfo); - MultiMap groupMembers = hzInstance.getMultiMap(GROUP_MEMBERS); Collection members = groupMembers.get(groupId); if (members == null || members.size() == 0) { members = loadGroupMemberFromDB(hzInstance, groupId); } + + boolean isNewOwnerInGroup = false; + for (WFCMessage.GroupMember member : members) { + if (member.getMemberId().equals(newOwner)) { + if(member.getType() != GroupMemberType_Removed) { + isNewOwnerInGroup = true; + } + break; + } + } + if(!isNewOwnerInGroup) { + return ErrorCode.ERROR_CODE_NOT_IN_GROUP; + } + + long updateDt = System.currentTimeMillis(); + groupInfo = groupInfo.toBuilder().setOwner(newOwner).setUpdateDt(updateDt).setMemberUpdateDt(updateDt).build(); + mIMap.set(groupId, groupInfo); + int modifyMemeberCount = 0; for (WFCMessage.GroupMember member : members) { if (modifyMemeberCount == 2) {