QoS 1 should only acknowledge if the handlers did not throw an Exception #167
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Today I noticed a problem where messages have been "lost", and it turns out that in the QoS 1 message-received-handler, there was an Exception. PHP-MQTT-Client has acknowledged the QoS 1 message although my code failed to process it.
This patch fixes the problem: When the message-received-handler fails with an Exception, then the message will not be acknowledged.
I am not 100% sure if I should also handle the case "Subscriber callback threw exception for published message". I have included this case since I think the message should only be acknowledged if the whole code/callbacks/handlers are processed smoothly without any errors.
What do you think?