Flagged in the pre-release review; currently a deliberate design choice (tolerant receiver), not fixed. Filing so the tradeoff is visible and revisitable.
MQTT 3.1.1 (MQTT-3.3.1-2) requires DUP to be 0 for QoS 0 messages. src/core/mqtt_packet.c's PUBLISH decode does not reject DUP=1 with QoS 0 — a malformed/misbehaving broker or MITM packet (0x38, PUBLISH DUP=1 QoS0) is currently accepted and surfaced to the callback as-is.
Decide deliberately: keep the tolerant-receiver posture (document it in docs/PROTOCOL.md's coverage notes), or reject with -MQTT_ERR_MALFORMED like the empty-topic-name fix already applied for MQTT-4.7.3-1.
Flagged in the pre-release review; currently a deliberate design choice (tolerant receiver), not fixed. Filing so the tradeoff is visible and revisitable.
MQTT 3.1.1 (MQTT-3.3.1-2) requires DUP to be 0 for QoS 0 messages.
src/core/mqtt_packet.c's PUBLISH decode does not reject DUP=1 with QoS 0 — a malformed/misbehaving broker or MITM packet (0x38, PUBLISH DUP=1 QoS0) is currently accepted and surfaced to the callback as-is.Decide deliberately: keep the tolerant-receiver posture (document it in
docs/PROTOCOL.md's coverage notes), or reject with-MQTT_ERR_MALFORMEDlike the empty-topic-name fix already applied for MQTT-4.7.3-1.