Commit 0064e1d1150f797388e535b8d427830de831316e
Committed by
GitHub
Merge pull request #2826 from blackstar-baba/master
fix bug: Resending the message causes the client to interrupt
Showing
1 changed file
with
3 additions
and
1 deletions
@@ -19,6 +19,7 @@ import io.netty.channel.EventLoop; | @@ -19,6 +19,7 @@ import io.netty.channel.EventLoop; | ||
19 | import io.netty.handler.codec.mqtt.MqttFixedHeader; | 19 | import io.netty.handler.codec.mqtt.MqttFixedHeader; |
20 | import io.netty.handler.codec.mqtt.MqttMessage; | 20 | import io.netty.handler.codec.mqtt.MqttMessage; |
21 | import io.netty.util.concurrent.ScheduledFuture; | 21 | import io.netty.util.concurrent.ScheduledFuture; |
22 | +import io.netty.handler.codec.mqtt.MqttMessageType; | ||
22 | 23 | ||
23 | import java.util.concurrent.TimeUnit; | 24 | import java.util.concurrent.TimeUnit; |
24 | import java.util.function.BiConsumer; | 25 | import java.util.function.BiConsumer; |
@@ -44,7 +45,8 @@ final class RetransmissionHandler<T extends MqttMessage> { | @@ -44,7 +45,8 @@ final class RetransmissionHandler<T extends MqttMessage> { | ||
44 | private void startTimer(EventLoop eventLoop){ | 45 | private void startTimer(EventLoop eventLoop){ |
45 | this.timer = eventLoop.schedule(() -> { | 46 | this.timer = eventLoop.schedule(() -> { |
46 | this.timeout += 5; | 47 | this.timeout += 5; |
47 | - MqttFixedHeader fixedHeader = new MqttFixedHeader(this.originalMessage.fixedHeader().messageType(), true, this.originalMessage.fixedHeader().qosLevel(), this.originalMessage.fixedHeader().isRetain(), this.originalMessage.fixedHeader().remainingLength()); | 48 | + boolean isDup = this.originalMessage.fixedHeader().messageType() == MqttMessageType.PUBLISH ? true : this.originalMessage.fixedHeader().isDup(); |
49 | + MqttFixedHeader fixedHeader = new MqttFixedHeader(this.originalMessage.fixedHeader().messageType(), isDup, this.originalMessage.fixedHeader().qosLevel(), this.originalMessage.fixedHeader().isRetain(), this.originalMessage.fixedHeader().remainingLength()); | ||
48 | handler.accept(fixedHeader, originalMessage); | 50 | handler.accept(fixedHeader, originalMessage); |
49 | startTimer(eventLoop); | 51 | startTimer(eventLoop); |
50 | }, timeout, TimeUnit.SECONDS); | 52 | }, timeout, TimeUnit.SECONDS); |