Browse Source
Follow mqtt 3.1.1 protocol number 3.3.1-2
Follow mqtt 3.1.1 protocol number 3.3.1-2 : The DUP flag MUST be set to 0 for all QoS 0 messages. If the qos of the publish message is not 0, then set dup to true
pull/2836/head
blackstar-baba
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with
6 additions and
2 deletions
netty-mqtt/src/main/java/org/thingsboard/mqtt/RetransmissionHandler.java
@ -18,8 +18,9 @@ package org.thingsboard.mqtt;
import io.netty.channel.EventLoop ;
import io.netty.handler.codec.mqtt.MqttFixedHeader ;
import io.netty.handler.codec.mqtt.MqttMessage ;
import io.netty.util.concurrent.ScheduledFuture ;
import io.netty.handler.codec.mqtt.MqttMessageType ;
import io.netty.handler.codec.mqtt.MqttQoS ;
import io.netty.util.concurrent.ScheduledFuture ;
import java.util.concurrent.TimeUnit ;
import java.util.function.BiConsumer ;
@ -45,7 +46,10 @@ final class RetransmissionHandler<T extends MqttMessage> {
private void startTimer ( EventLoop eventLoop ) {
this . timer = eventLoop . schedule ( ( ) - > {
this . timeout + = 5 ;
boolean isDup = this . originalMessage . fixedHeader ( ) . messageType ( ) = = MqttMessageType . PUBLISH ? true : this . originalMessage . fixedHeader ( ) . isDup ( ) ;
boolean isDup = this . originalMessage . fixedHeader ( ) . isDup ( ) ;
if ( this . originalMessage . fixedHeader ( ) . messageType ( ) = = MqttMessageType . PUBLISH & & this . originalMessage . fixedHeader ( ) . qosLevel ( ) ! = MqttQoS . AT_MOST_ONCE ) {
isDup = true ;
}
MqttFixedHeader fixedHeader = new MqttFixedHeader ( this . originalMessage . fixedHeader ( ) . messageType ( ) , isDup , this . originalMessage . fixedHeader ( ) . qosLevel ( ) , this . originalMessage . fixedHeader ( ) . isRetain ( ) , this . originalMessage . fixedHeader ( ) . remainingLength ( ) ) ;
handler . accept ( fixedHeader , originalMessage ) ;
startTimer ( eventLoop ) ;