Browse Source

Merge pull request #8649 from AndriiLandiak/fix/mqtt-channel-handler-decode-result

[3.5.2] Fix/mqttChannelHandler prevent class cast exception
pull/8665/head
Andrew Shvayka 3 years ago
committed by GitHub
parent
commit
514aa025db
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 57
      netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttChannelHandler.java

57
netty-mqtt/src/main/java/org/thingsboard/mqtt/MqttChannelHandler.java

@ -35,7 +35,9 @@ import io.netty.handler.codec.mqtt.MqttSubAckMessage;
import io.netty.handler.codec.mqtt.MqttUnsubAckMessage; import io.netty.handler.codec.mqtt.MqttUnsubAckMessage;
import io.netty.util.CharsetUtil; import io.netty.util.CharsetUtil;
import io.netty.util.concurrent.Promise; import io.netty.util.concurrent.Promise;
import lombok.extern.slf4j.Slf4j;
@Slf4j
final class MqttChannelHandler extends SimpleChannelInboundHandler<MqttMessage> { final class MqttChannelHandler extends SimpleChannelInboundHandler<MqttMessage> {
private final MqttClientImpl client; private final MqttClientImpl client;
@ -48,31 +50,36 @@ final class MqttChannelHandler extends SimpleChannelInboundHandler<MqttMessage>
@Override @Override
protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception { protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception {
switch (msg.fixedHeader().messageType()) { if (msg.decoderResult().isSuccess()) {
case CONNACK: switch (msg.fixedHeader().messageType()) {
handleConack(ctx.channel(), (MqttConnAckMessage) msg); case CONNACK:
break; handleConack(ctx.channel(), (MqttConnAckMessage) msg);
case SUBACK: break;
handleSubAck((MqttSubAckMessage) msg); case SUBACK:
break; handleSubAck((MqttSubAckMessage) msg);
case PUBLISH: break;
handlePublish(ctx.channel(), (MqttPublishMessage) msg); case PUBLISH:
break; handlePublish(ctx.channel(), (MqttPublishMessage) msg);
case UNSUBACK: break;
handleUnsuback((MqttUnsubAckMessage) msg); case UNSUBACK:
break; handleUnsuback((MqttUnsubAckMessage) msg);
case PUBACK: break;
handlePuback((MqttPubAckMessage) msg); case PUBACK:
break; handlePuback((MqttPubAckMessage) msg);
case PUBREC: break;
handlePubrec(ctx.channel(), msg); case PUBREC:
break; handlePubrec(ctx.channel(), msg);
case PUBREL: break;
handlePubrel(ctx.channel(), msg); case PUBREL:
break; handlePubrel(ctx.channel(), msg);
case PUBCOMP: break;
handlePubcomp(msg); case PUBCOMP:
break; handlePubcomp(msg);
break;
}
} else {
log.error("[{}] Message decoding failed: {}", client.getClientConfig().getClientId(), msg.decoderResult().cause().getMessage());
ctx.close();
} }
} }

Loading…
Cancel
Save