Uploaded image for project: 'OASIS Message Queuing Telemetry Transport (MQTT) TC'
  1. OASIS Message Queuing Telemetry Transport (MQTT) TC
  2. MQTT-107

Missing normative statement. Broader concern about the list of normative statements.

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.1
    • Fix Version/s: 3.1.1
    • Component/s: core
    • Labels:
      None
    • Proposal:
      Hide

      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:..

      Show
      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:..
    • Resolution:
      Hide

      Resolved in WD17

      Show
      Resolved in WD17

      Description

      "A subscribe request which contains a Topic Filter that is identical to an existing Subscription's Topic Filter completely replaces that existing Subscription with a new Subscription." - from section 3.8.4 appears to be a normative statement specifying particular (testable) behaviour in the case of a SUBSCRIBE replacing an existing subscription, but does not appear in the list of normative statements.

      Are we sure that all normative statements are listed there? Should it be possible to read only the list of normative statements and produce and compliant implementation? If so and statements such as the above have been excluded (and additionally have no RFC language in them) what is their status now? If the list is not considered comprehensive and you need to read the whole spec (and given that we have explicitly called out non normative content in the spec, implying everything else is normative) what is the value of the list?

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              al.s-m Allan Stockdill-Mander
            • Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: