mqtt-packet
mqtt-packet copied to clipboard
fix(conn): password can be set when username unset when mqttv5
MQTT-v5 allows sending a password without username
Which means username flag set 0 and username not be present in CONNECT payload.
And there is no necessary relationship between Username flag and Password flag.
see also:
3.1.2.8 User Name Flag Position: bit 7 of the Connect Flags.
If the User Name Flag is set to 0, a User Name MUST NOT be present in the Payload [MQTT-3.1.2-16]. If the User Name Flag is set to 1, a User Name MUST be present in the Payload [MQTT-3.1.2-17].
3.1.2.9 Password Flag Position: bit 6 of the Connect Flags.
If the Password Flag is set to 0, a Password MUST NOT be present in the Payload [MQTT-3.1.2-18]. If the Password Flag is set to 1, a Password MUST be present in the Payload [MQTT-3.1.2-19].
Non-normative comment
This version of the protocol allows the sending of a Password with no User Name, where MQTT v3.1.1 did not. This reflects the common use of Password for credentials other than a password.
https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901044