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 8b7f7c9f..a1fa82d4 100755 --- a/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java +++ b/broker/src/main/java/io/moquette/spi/impl/ProtocolProcessor.java @@ -188,8 +188,7 @@ public class ProtocolProcessor { String clientId = payload.clientIdentifier(); LOG.info("Processing CONNECT message. CId={}, username={}", clientId, payload.userName()); - if (msg.variableHeader().version() < MqttVersion.MQTT_3_1_1.protocolLevel() || - msg.variableHeader().version() >= MqttVersion.Wildfire_Max.protocolLevel()) { + if (msg.variableHeader().version() < MqttVersion.MQTT_3_1_1.protocolLevel()) { MqttConnAckMessage badProto = connAck(CONNECTION_REFUSED_UNACCEPTABLE_PROTOCOL_VERSION); LOG.error("MQTT protocol version is not valid. CId={}", clientId); diff --git a/broker/src/main/java/io/netty/handler/codec/mqtt/MqttVersion.java b/broker/src/main/java/io/netty/handler/codec/mqtt/MqttVersion.java index 9d5b7ed6..b92c3764 100755 --- a/broker/src/main/java/io/netty/handler/codec/mqtt/MqttVersion.java +++ b/broker/src/main/java/io/netty/handler/codec/mqtt/MqttVersion.java @@ -27,7 +27,7 @@ public enum MqttVersion { MQTT_3_1_1("MQTT", (byte) 4), Wildfire_1("MQTT", (byte) 5), Wildfire_2("MQTT", (byte) 6), - Wildfire_Max("MQTT", (byte) 7); + Wildfire_Future("MQTT", (byte) 7); private final String name; private final byte level; @@ -59,6 +59,9 @@ public enum MqttVersion { } } } + if(protocolLevel > Wildfire_Future.level) { + return Wildfire_Future; + } throw new MqttUnacceptableProtocolVersionException(protocolName + "is unknown protocol name"); } @@ -68,6 +71,9 @@ public enum MqttVersion { return mv; } } + if(protocolLevel > Wildfire_Future.level) { + return Wildfire_Future; + } throw new MqttUnacceptableProtocolVersionException(protocolLevel + "is unknown protocol level"); } }