From d7eddbf7b483bbe15ba5253c41d637348774e7ff Mon Sep 17 00:00:00 2001 From: imhao183 Date: Fri, 22 Jan 2021 09:32:55 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E6=B1=82=E6=95=B0=E6=8D=AE=E9=9D=9E?= =?UTF-8?q?=E6=B3=95=E6=97=B6=E7=BB=99=E5=87=BA=E9=94=99=E8=AF=AF=E5=93=8D?= =?UTF-8?q?=E5=BA=94=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/moquette/spi/impl/Qos1PublishHandler.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 d4d72934..e148d91f 100755 --- a/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java +++ b/broker/src/main/java/io/moquette/spi/impl/Qos1PublishHandler.java @@ -16,12 +16,10 @@ package io.moquette.spi.impl; +import static cn.wildfirechat.common.ErrorCode.*; import static io.moquette.spi.impl.Utils.readBytesAndRewind; import static io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader.from; import static io.netty.handler.codec.mqtt.MqttQoS.AT_MOST_ONCE; -import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_NOT_IMPLEMENT; -import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_OVER_FREQUENCY; -import static cn.wildfirechat.common.ErrorCode.ERROR_CODE_SUCCESS; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -256,6 +254,13 @@ public class Qos1PublishHandler extends QosPublishHandler { String imtopic = topic.getTopic(); ByteBuf payload = msg.payload(); byte[] payloadContent = readBytesAndRewind(payload); + if(payloadContent.length == 0) { + ByteBuf ackPayload = Unpooled.buffer(); + ackPayload.ensureWritable(1).writeByte(ERROR_CODE_INVALID_DATA.getCode()); + sendPubAck(clientID, messageID, ackPayload, ERROR_CODE_INVALID_DATA); + return; + } + MemorySessionStore.Session session = m_sessionStore.getSession(clientID); payloadContent = AES.AESDecrypt(payloadContent, session.getSecret(), true); imHandler(clientID, username, imtopic, payloadContent, (errorCode, ackPayload) -> sendPubAck(clientID, messageID, ackPayload, errorCode), false);