-
Type: Improvement
-
Status: Closed
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: core
-
Labels:None
-
Proposal:
The specification currently says "A Keep Alive value of zero (0) has the effect of turning off the keep alive mechanism", but we have no numbered normative statement assigned to that. I think we should have one - but that means we have to be more precise about what we mean by Keep Alive of 0.
I assume we would want Server administrators to be able to terminate connections to Clients at any time, regardless of whether keep alive intervals have expired or not, so we need to make sure that the wording does not preclude this.
Would we want a Server to be able to terminate the connection to a Keep Alive = 0 client that does not send QoS 1 or QoS 2 acknowledgements?
Assuming the answer is no, here are some suggestions
a) The Server MUST NOT disconnect the Client on the grounds of inactivity
b) The Server MUST NOT disconnect a Client which fails to send control packets regularly
c) A client can keep its Network Connection open for an indefinite period of time without sending any control packets. A Server MUST NOT disconnect a Client for doing this.
If we want to allow the Server to enforce its own timeout on PUBACK / PUBCMP then we could use a sentence similar to the one above but either
i) Make the MUST NOT into a SHOULD NOT
ii) Change "Control Packet" into "PUBLISH packet"