diff --git a/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java b/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java index 9f08a1d8..7b373f33 100755 --- a/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java +++ b/broker/src/main/java/io/moquette/spi/impl/MessagesPublisher.java @@ -161,7 +161,7 @@ public class MessagesPublisher { private void publish2Receivers(String sender, int conversationType, String target, int line, long messageHead, Collection receivers, String pushContent, String pushData, String exceptClientId, int pullType, int messageContentType, long serverTime, int mentionType, List mentionTargets, int persistFlag) { if (persistFlag == Transparent) { - publishTransparentMessage2Receivers(messageHead, receivers, pullType); + publishTransparentMessage2Receivers(messageHead, receivers, pullType, exceptClientId); return; } @@ -366,7 +366,7 @@ public class MessagesPublisher { } } - private void publishTransparentMessage2Receivers(long messageHead, Collection receivers, int pullType) { + private void publishTransparentMessage2Receivers(long messageHead, Collection receivers, int pullType, String exceptClientId) { WFCMessage.Message message = m_messagesStore.getMessage(messageHead); if (message != null) { @@ -381,6 +381,9 @@ public class MessagesPublisher { if (targetSession.getClientID() == null) { continue; } + if (targetSession.getClientID().equals(exceptClientId)) { + continue; + } boolean targetIsActive = this.connectionDescriptors.isConnected(targetSession.getClientSession().clientID); if (targetIsActive) {