From 239a8495f9bdd89d92f06d8a97c25d5e8a37423c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A6=82=E6=A2=A6=E6=8A=80=E6=9C=AF?= <596392912@qq.com> Date: Wed, 1 Sep 2021 17:49:20 +0800 Subject: [PATCH] =?UTF-8?q?:sparkles:=20mqtt-client=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=AE=A2=E9=98=85=20reasonCodes=20=E5=88=A4=E6=96=AD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/DefaultMqttClientProcessor.java | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/client/DefaultMqttClientProcessor.java b/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/client/DefaultMqttClientProcessor.java index d6b138c..535e41f 100644 --- a/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/client/DefaultMqttClientProcessor.java +++ b/mica-mqtt-core/src/main/java/net/dreamlu/iot/mqtt/core/client/DefaultMqttClientProcessor.java @@ -122,8 +122,26 @@ public class DefaultMqttClientProcessor implements IMqttClientProcessor { if (paddingSubscribe == null) { return; } + String topicFilter = paddingSubscribe.getTopicFilter(); + MqttSubAckPayload subAckPayload = message.payload(); + List reasonCodes = subAckPayload.reasonCodes(); + // reasonCodes 为空 + if (reasonCodes.isEmpty()) { + logger.error("MqttClient topicFilter:{} subscribe failed reasonCode is empty messageId:{}", topicFilter, messageId); + paddingSubscribe.onSubAckReceived(); + clientStore.removePaddingSubscribe(messageId); + return; + } + // reasonCodes 范围 + Integer qos = reasonCodes.get(0); + if (qos == null || qos < 0 || qos > 2) { + logger.error("MqttClient topicFilter:{} subscribe failed reasonCodes:{} messageId:{}", topicFilter, reasonCodes, messageId); + paddingSubscribe.onSubAckReceived(); + clientStore.removePaddingSubscribe(messageId); + return; + } if (logger.isInfoEnabled()) { - logger.info("MQTT Topic:{} successfully subscribed messageId:{}", paddingSubscribe.getTopicFilter(), messageId); + logger.info("MQTT Topic:{} successfully subscribed messageId:{}", topicFilter, messageId); } paddingSubscribe.onSubAckReceived(); clientStore.removePaddingSubscribe(messageId); -- GitLab