From 5e13419c28ed222d8fcb917bb11702a371ae76e5 Mon Sep 17 00:00:00 2001 From: heavyrain lee Date: Sat, 13 Jul 2019 18:31:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BE=A4=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/moquette/persistence/MemoryMessagesStore.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 53adb23c..e89dc714 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -637,13 +637,16 @@ public class MemoryMessagesStore implements IMessagesStore { boolean isManager = false; WFCMessage.GroupMember gm = getGroupMember(groupId, operator); if (gm != null) { - if (gm.getType() == GroupMemberType_Removed) { + if (gm.getType() == GroupMemberType_Removed && !(memberList.size() == 1 && operator.equals(memberList.get(0).getMemberId()))) { return ErrorCode.ERROR_CODE_NOT_IN_GROUP; } else if (gm.getType() == GroupMemberType_Silent) { return ErrorCode.ERROR_CODE_NOT_RIGHT; } isManager = (gm.getType() == GroupMemberType_Manager || gm.getType() == GroupMemberType_Owner); - isMember = true; + + if (gm.getType() != GroupMemberType_Removed) { + isMember = true; + } } if (groupInfo.getType() == ProtoConstants.GroupType.GroupType_Restricted && ((groupInfo.getOwner() == null || !groupInfo.getOwner().equals(operator)) && !isManager)) { @@ -655,7 +658,7 @@ public class MemoryMessagesStore implements IMessagesStore { } } - if (!isMember) { + if (!isMember && !(memberList.size() == 1 && operator.equals(memberList.get(0).getMemberId()))) { return ErrorCode.ERROR_CODE_NOT_IN_GROUP; } }