-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: core
-
Labels:None
-
Proposal:
-
Resolution:
1 - [MQTT-2.0.0-1] "Unless stated otherwise, if either the Server or Client receives a Control Packet which does not meet this specification, it MUST close the Network Connection"
Should the server publish Will message in this case?
Also,what confuses me is the fact that for some cases the spec explicitly says that the server should close the connection (invalid flags in packet header, non-zero Reserved bits in payload of SUBSCRIBE Control packet) but not for others (zero packet identifier, invalid Topic Filter in SUBSCRIBE or UNSUBSCRIBE Control Packet, invalid Topic Name in PUBLISH Control Packet, non-zero length payload for DISCONNECT Control Packet, etc.).
2 - [MQTT-3.8.3-1] The Payload of a SUBSCRIBE packet MUST contain at least one Topic Filter / QoS pair. A SUBSCRIBE packet with no payload is a protocol violation.
There is no similar requirement for UNSUBSCRIBE Control packet. Is this by design? What is the rationale for this requirement/assymetry?
3 - [MQTT-3.1.3-4] The ClientId MUST comprise only Unicode [Unicode63] characters, and the length of the UTF-8 encoding MUST be at least zero bytes and no more than 65535 bytes.
It sound a bit strange to require that the string must be at least zero bytes. Every UTF-8 encoding meets this requirement.
4 - What is meant by transient error and what is the difference among transient error (4.8) protocol error (section 3.1.2.5) and protocol violation (3.1)?
5 - In section 3.8.3.1, Description in the table should read LSB for byte 2 and byte 8, rather than MSB.
6 - In section 3.10.2.2, Description in the table should read LSB for byte 2 and byte 7, rather than MSB.