The current spec is ambiguous with respect to the acceptable values of the QoS flag for PUBREL, SUBSCRIBE and UNSUBSCRIBE operations.
It could be interpreted that QoS must be set to 1 to force an appropriate ACK. However the ACK behavior is described independently.
do we accept only one value ?
if so, should it be 0, 1 or 2?
Are other values be treated as malformed?
Forcing 0 would change the protocol flow on the wire.
Forcing 1 is consistent with the spirit of the input spec, but we need some clarity. The intended ACK behavior is not really related to QoS.
I'm going to argue there's no one completely right answer. However, for consistency, I'd go with forcing 1. If we leave it 'woolly', then we create difficulties down the road if we ever do want to use any of these values for something else.
Does any one know what current implementations of clients do?