From 68abeed907046786d39e16c123f4517350483a24 Mon Sep 17 00:00:00 2001 From: heavyrian2012 Date: Mon, 20 Mar 2023 13:49:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=BA=9B=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=95=B0=E6=8D=AE=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/moquette/spi/impl/ProtocolProcessor.java | 5 +++-- .../main/java/io/moquette/spi/impl/Qos1PublishHandler.java | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java b/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java index f0c799c8..0bcdf9f4 100755 --- a/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java +++ b/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java @@ -608,8 +608,9 @@ public class ProtocolProcessor { channel.closeFuture(); //disconnect the session - - m_sessionsStore.sessionForClient(clientID).disconnect(session.getUsername(), isDup, isRetain); + if(session != null) { + m_sessionsStore.sessionForClient(clientID).disconnect(session.getUsername(), isDup, isRetain); + } } diff --git a/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java b/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java index b28fd33d..7065bbdd 100755 --- a/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java +++ b/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java @@ -252,6 +252,13 @@ public class Qos1PublishHandler extends QosPublishHandler { MemorySessionStore.Session session = m_sessionStore.getSession(clientID); payloadContent = AES.AESDecrypt(payloadContent, session.getSecret(), true); + if(payloadContent == null) { + ByteBuf ackPayload = Unpooled.buffer(); + ackPayload.ensureWritable(1).writeByte(ERROR_CODE_INVALID_DATA.getCode()); + sendPubAck(clientID, messageID, ackPayload, ERROR_CODE_INVALID_DATA); + return; + } + imHandler(clientID, username, imtopic, payloadContent, (errorCode, ackPayload) -> sendPubAck(clientID, messageID, ackPayload, errorCode), ProtoConstants.RequestSourceType.Request_From_User); }