diff --git a/broker/src/main/java/io/moquette/imhandler/RouteHandler.java b/broker/src/main/java/io/moquette/imhandler/RouteHandler.java index 85234cbc..1e6ee26b 100644 --- a/broker/src/main/java/io/moquette/imhandler/RouteHandler.java +++ b/broker/src/main/java/io/moquette/imhandler/RouteHandler.java @@ -40,6 +40,11 @@ public class RouteHandler extends IMHandler { return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH; } + if(request.getPlatform() != session.getPlatform() && m_messagesStore.existSignatures()) { + LOG.error("Session <{}, {}> platform is {} mismatch the request {}", session.getUsername(), session.getClientID(), session.getPlatform(), request.getPlatform()); + return ErrorCode.ERROR_CODE_SECRECT_KEY_MISMATCH; + } + String serverIp = mServer.getServerIp(); String longPort = mServer.getLongPort(); String shortPort = mServer.getShortPort(); diff --git a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java index 589bbf23..1922c4f7 100755 --- a/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java +++ b/broker/src/main/java/io/moquette/persistence/MemoryMessagesStore.java @@ -4356,6 +4356,10 @@ public class MemoryMessagesStore implements IMessagesStore { @Override public boolean checkSignature(String signature) { + if(mClientSignatureSet.isEmpty()) { + return true; + } + if(StringUtil.isNullOrEmptyAfterTrim(signature)) { if(mRejectEmptySignature) { LOG.info("Failed check signature, no signature"); @@ -4373,6 +4377,11 @@ public class MemoryMessagesStore implements IMessagesStore { } } + @Override + public boolean existSignatures() { + return !mClientSignatureSet.isEmpty(); + } + @Override public void storeRetained(Topic topic, StoredMessage storedMessage) { LOG.debug("Store retained message for topic={}, CId={}", topic, storedMessage.getClientID()); diff --git a/broker/src/main/java/io/moquette/spi/IMessagesStore.java b/broker/src/main/java/io/moquette/spi/IMessagesStore.java index f94268dd..7b3b6f6f 100755 --- a/broker/src/main/java/io/moquette/spi/IMessagesStore.java +++ b/broker/src/main/java/io/moquette/spi/IMessagesStore.java @@ -251,6 +251,7 @@ public interface IMessagesStore { String getShortUUID(); boolean checkSignature(String signature); + boolean existSignatures(); /** * Used to initialize all persistent store structures */