diff --git a/lib/mqtt_msg.c b/lib/mqtt_msg.c index f6f983e..27dcdea 100644 --- a/lib/mqtt_msg.c +++ b/lib/mqtt_msg.c @@ -568,15 +568,16 @@ int mqtt_has_valid_msg_hdr(uint8_t *buffer, uint32_t length) switch (mqtt_get_type(buffer)) { case MQTT_MSG_TYPE_CONNECT: case MQTT_MSG_TYPE_CONNACK: - case MQTT_MSG_TYPE_PUBACK: case MQTT_MSG_TYPE_PUBREC: case MQTT_MSG_TYPE_PUBCOMP: - case MQTT_MSG_TYPE_SUBACK: - case MQTT_MSG_TYPE_UNSUBACK: case MQTT_MSG_TYPE_PINGREQ: case MQTT_MSG_TYPE_PINGRESP: case MQTT_MSG_TYPE_DISCONNECT: return (buffer[0] & 0x0f) == 0; /* all flag bits are 0 */ + case MQTT_MSG_TYPE_SUBACK: + case MQTT_MSG_TYPE_PUBACK: + case MQTT_MSG_TYPE_UNSUBACK: + return ((buffer[0] & 0x0f) == 0x02) || ((buffer[0] & 0x0f) == 0x0); /* Non standard Thingboard headers */ case MQTT_MSG_TYPE_PUBREL: case MQTT_MSG_TYPE_SUBSCRIBE: case MQTT_MSG_TYPE_UNSUBSCRIBE: