Browse Source

Merge pull request #2826 from blackstar-baba/master

fix bug: Resending the message causes the client to interrupt
pull/2836/head
Andrew Shvayka 6 years ago
committed by GitHub
parent
commit
0064e1d115
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      netty-mqtt/src/main/java/org/thingsboard/mqtt/RetransmissionHandler.java

4
netty-mqtt/src/main/java/org/thingsboard/mqtt/RetransmissionHandler.java

@ -19,6 +19,7 @@ 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 java.util.concurrent.TimeUnit;
import java.util.function.BiConsumer;
@ -44,7 +45,8 @@ final class RetransmissionHandler<T extends MqttMessage> {
private void startTimer(EventLoop eventLoop){
this.timer = eventLoop.schedule(() -> {
this.timeout += 5;
MqttFixedHeader fixedHeader = new MqttFixedHeader(this.originalMessage.fixedHeader().messageType(), true, this.originalMessage.fixedHeader().qosLevel(), this.originalMessage.fixedHeader().isRetain(), this.originalMessage.fixedHeader().remainingLength());
boolean isDup = this.originalMessage.fixedHeader().messageType() == MqttMessageType.PUBLISH ? true : this.originalMessage.fixedHeader().isDup();
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);
}, timeout, TimeUnit.SECONDS);

Loading…
Cancel
Save