1. Add the following additional numbered conformance statements (some of these are created out of existing text):
[MQTT-2.2.2-6].
A PUBLISH Packet MUST NOT have both QoS bits set to 1. If a Server or Client receives a PUBLISH Packet which has both QoS bits set to 1 it MUST close the Network Connection
[MQTT-3.1.2-11].
If the Will Flag is set to 0 the Will QoS and Will Retain fields in the Connect Flags MUST be set to zero and the Will Topic and Will Message fields MUST NOT be present in the payload
[MQTT-3.1.2-12].
If the Will Flag is set to 0, a Will Message MUST NOT be published when this Network Connection ends.
[MQTT-3.1.3-10]
The Will Topic MUST be a UTF-8 encoded string as defined in Section 1.5.3.
[MQTT-3.1.3-11]
The User Name MUST be a UTF-8 encoded string as defined in Section 1.5.3.
[MQTT-3.1.4-3]
If CONNECT validation is successful the Server MUST perform the processing of CleanSession MUST that is described in section 3.1.2.4
[MQTT-3.1.4-4]
If CONNECT validation is successful the Server MUST acknowledge the CONNECT Packet with a CONNACK Packet containing a zero return code
[MQTT-3.8.3-1]
The Topic Filters in a SUBSCRIBE packet payload MUST be UTF-8 encoded strings as defined in Section 1.5.3.
[MQTT-3.10.3-1]
The Topic Filters in an UNSUBSCRIBE packet MUST be UTF-8 encoded strings as defined in Section 1.5.3, packed contiguously.
[MQTT-3.14.4-3]
On receipt of DISCONNECT the Server MUST discard any Will Message associated with the current connection without publishing it, as described in Section 3.1.2.5.
[MQTT-4.5.0-1]
When a Server takes ownership of an incoming Application Message it MUST add it to the Session state of clients which have matching Subscriptions. Matching rules are defined in Section 4.7.
[MQTT-4.7.3-4]
When it performs subscription matching the Server MUST not perform any normalization of Topic Names or Topic Filters, or any modification or substitution of unrecognized characters
---------------------------------------------------------------------------
2. Augment the following numbered statements so they now read
[MQTT-3.1.2-4]
If CleanSession is set to 0, the Server MUST resume communications with the Client based on state from the current Session (as identified by the Client identifier). If there is no Session associated with the Client identifier the Server MUST create a new Session. The Client and Server MUST store the Session after the Client and Server are disconnected
[MQTT-3.3.2-1]
The Topic Name MUST be present as the first field in the PUBLISH packet variable header. It MUST be a UTF-8 encoded string
[MQTT-3.3.2-3]
The Topic Name in a PUBLISH Packet sent by a Server to a subscribing Client MUST match the Subscription’s Topic Filter according to the matching process defined in Section 4.7.
--------------------------------------------------
3. Improve the wording of the following statements, as follows:
[MQTT-1.4.0-1]
The character data in a UTF-8 encoded string MUST be well-formed UTF-8 as defined by the Unicode specification [Unicode] and restated in RFC 3629 [RFC 3629]. In particular this data MUST NOT include encodings of code points between U+D800 and U+DFFF. If a receiver (Server or Client) receives a Control Packet containing ill-formed UTF-8 it MUST close the Network Connection.
[MQTT-2.2.2-1]
Where a flag bit is marked as “Reserved” in Table 2.2 - Flag Bits, it is reserved for future use and MUST be set to the value listed in that table.
[MQTT-3.1.2-5]
After the disconnection of a Session that had CleanSession set to 0, the Server MUST store further QoS 1 and QoS 2 messages that match any subscriptions that the client had at the time of disconnection as part of the Session state
[MQTT-3.1.2-6]
If CleanSession is set to 1, the Client and Server MUST discard any previous Session and start a new one. This Session lasts as long as the Network Connection. State data associated with this session MUST NOT be reused in any subsequent Session
[MQTT-3.1.2-8].
If the Will Flag is set to 1 this indicates that, if the Connect request is accepted,a Will Message MUST be stored on the Server and associated with the Network Connection. The Will Message MUST be published when the Network Connection is subsequently closed unless the Will Message has been deleted by the Server on receipt of a DISCONNECT Packet.
[MQTT-3.1.2-24]
If the Keep Alive value is non-zero and the Server does not receive a Control Packet from the Client within one and a half times the Keep Alive time period, it MUST disconnect the Network Connection to the Client as if the network had failed.
[MQTT-3.1.3-3]
The Client Identifier (ClientId) MUST be present and MUST be the first field in the CONNECT packet payload
[MQTT-3.2.2-2]
If none of the return codes listed in Table 3.1 are deemed applicable, then the Server MUST close the Network Connection without sending a CONNACK.
[MQTT-4.1.0.1]
The Client and Server MUST store Session state for the entire duration of the Session
--------------------------------------------------------
Was >> Revise the conformance clauses in terms of making reference to normative sections, with appropriate exclusions for notes, examples, etc. <<