> Disconnecting makes sense.
Not in all cases - it depends on how the client chooses to manage its state around the different QoS values.
For example, in the case of QoS2:
- client receives PUBREL
- client sends PUBCOMP and removes any stored state related to that ID
- the network breaks so the PUBCOMP never reaches the broker
- at some point the client reconnects, the broker resends the PUBREL
- the client has now received a PUBREL for an ID it doesn't know about.
In that case, the correct processing is for the client to assume the PUBREL is being received for a message it has already dealt with, so should respond normally with a PUBCOMP.