diff --git a/broker/src/main/java/io/moquette/imhandler/IMHandler.java b/broker/src/main/java/io/moquette/imhandler/IMHandler.java index 881b4966..13175190 100755 --- a/broker/src/main/java/io/moquette/imhandler/IMHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/IMHandler.java @@ -238,8 +238,9 @@ abstract public class IMHandler { Set notifyReceivers = new LinkedHashSet<>(); message = m_messagesStore.storeMessage(username, clientID, message); - int pullType = m_messagesStore.getNotifyReceivers(username, message, notifyReceivers); - this.publisher.publish2Receivers(message, notifyReceivers, clientID, pullType); + WFCMessage.Message.Builder messageBuilder = message.toBuilder(); + int pullType = m_messagesStore.getNotifyReceivers(username, messageBuilder, notifyReceivers); + this.publisher.publish2Receivers(messageBuilder.build(), notifyReceivers, clientID, pullType); return notifyReceivers.size(); } diff --git a/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java b/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java index f6674a0e..c0df8d06 100644 --- a/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/RecallMessageHandler.java @@ -33,7 +33,7 @@ public class RecallMessageHandler extends IMHandler { return ErrorCode.ERROR_CODE_NOT_EXIST; } - m_messagesStore.getNotifyReceivers(fromUser, message, notifyReceivers); + m_messagesStore.getNotifyReceivers(fromUser, message.toBuilder(), notifyReceivers); this.publisher.publishRecall2Receivers(int64Buf.getId(), fromUser, notifyReceivers, clientID); return errorCode; diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index d5ced6d1..16d8e6b2 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -170,7 +170,8 @@ public class MemoryMessagesStore implements IMessagesStore { } @Override - public int getNotifyReceivers(String fromUser, WFCMessage.Message message, Set notifyReceivers) { + public int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder messageBuilder, Set notifyReceivers) { + WFCMessage.Message message = messageBuilder.build(); HazelcastInstance hzInstance = m_Server.getHazelcastInstance(); int type = message.getConversation().getType(); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index 45ec3f84..e69aaef8 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -96,7 +96,7 @@ public interface IMessagesStore { DatabaseStore getDatabaseStore(); WFCMessage.Message storeMessage(String fromUser, String fromClientId, WFCMessage.Message message); - int getNotifyReceivers(String fromUser, WFCMessage.Message message, Set notifyReceivers); + int getNotifyReceivers(String fromUser, WFCMessage.Message.Builder message, Set notifyReceivers); Set getAllEnds(); WFCMessage.PullMessageResult fetchMessage(String user, String exceptClientId, long fromMessageId, int pullType); WFCMessage.PullMessageResult loadRemoteMessages(String user, WFCMessage.Conversation conversation, long beforeUid, int count);