1. Make the following changes/additions to the numbered normative statements in WD 16
a) line 502. Make the existing sentence into a MUST, as follows:
"If RETAIN is 0 in a PUBLISH Packet sent by a client to a server, the server MUST NOT store the message as a retained message and MUST NOT remove or replace any existing retained message. [MQTT-2.1.2-6]"
b) line 761. Add the first sentence of the existing paragraph "It is the responsibility...." into the existing [MQTT-3.1.2-19]
c) line 788. Make existing sentence into [MQTT-3.1.3-1] and add 1 onto all the subsequent numbered statements in section 3.1.3. So that it becomes more understandable, call out the order of the fields as follows:
"These fields, when present, MUST appear in the order Client Identifier, Will Topic, Will Message, User Name, Password[MQTT-3.1.3-1]"
d) line 908. Replace "before closing the Network Connection" with
"If a server sends a CONNACK packet containing a non-zero return code it MUST then close the Network Connection [MQTT-3.2.2-1]" and renumber the existing [MQTT-3.2.2-1]
e) line 943 Make existing sentence into a MUST
"The Topic Name sent to a subscribing Client MUST match the Subscription's Topic Filter [MQTT-3.3.2-3]"
f) line 1121 Add a new sentence
"The Server MUST treat a SUBSCRIBE packet as malformed and close the Network Connection if any of Reserved bits in the payload are non-zero [MQTT-3.8.3-2]
g) line 1137. Make the paragraph into a MUST statement as follows:
"If a Server receives a subscribe request containing a Topic Filter that is identical to an existing Subscription's Topic Filter then it MUST completely replace that existing Subscription with a new Subscription. The Topic Filter in the new Subscription will be identical to that in the previous Subscription, although its maximum QoS value could be different. Any existing retained publications matching the Topic Filter MUST be resent, but the flow of publications MUST NOT be interrupted.[MQTT-3.8.4-3]
h) line 1197. Number the existing sentence
"SUBACK return codes other than 0x00, 0x01, 0x02 and 0x80 are reserved and MUST NOT be used [MQTT-3.9.3-1]"
i) Line 1413. Add the subsequent sentence to the numbered statement, so it becomes
When a Client reconnects with CleanSession = 0, both the client and server MUST redeliver any previous in-flight QoS 1 and QoS 2 messages [MQTT-4.4.0-1]. This means re-sending any unacknowledged PUBLISH Packets (where QoS > 0) and PUBREL Packets.
2. Update the Conformance requirement text in 7.1
Existing 7.1.1 text
An MQTT Server conforms to this specification if it satisfies all of the MUST level requirements in the following sections that are identified for the Server:...
Replacement 7.1.1 text
An MQTT Server conforms to this specification if
1. The syntax of all Control Packets that it sends matches the syntax described in Chapters 2 and 3, and
2. It follows the Topic matching rules described in Section 4.7, and
3 It satisfies all of the MUST level requirements in the following sections that are identified for the Server:..
Existing 7.1.2 text
An MQTT Client conforms to this specification if it satisfies all of the MUST level requirements in the following sections that are identified for the Client...
Replacement 7.1.1 text
An MQTT Client conforms to this specification if
1. The syntax of all Control Packets that it sends matches the syntax described in Chapters 2 and 3, and
2 It satisfies all of the MUST level requirements in the following sections that are identified for the Client:..