0.20
The is a major release which adds:
- Full QOS1/2 support including persistent sessions (both memory and disk storage supported).
- Significant changes (mostly backwards compatible for now) to the handling of inbound messages (see this issue).
- A new pinger.
- Major improvements to the test suite.
The largest changes were introduced into @master in October (immediately after the release of v0.12) and we have delayed the release until now to allow for testing (the core code has been running on a number of production systems for over two months). However, due to the extent of the changes, we do recommend that you thoroughly test after upgrading.
Breaking changes include (but are not limited to):
paho
paho.Publish
when publishing at QOS1/2 the packet identifier (if acquired) was released if the context expired
regardless of whether the message had been sent (potentially leading to reuse of the ID and in breach of the spec).
This has been changed such that once transmitted, the message will be acknowledged regardless of the publish context
(but the Publish function will only block until the context expires). The Errors returned now better indicate what
occurred.- router - this should work as-is for most users in v0.20, however
ClientConfig.Router
will be removed in a future
release. Please replaceClientConfig.Router
withClientConfig.OnPublishReceived
(which is more flexible; note that
you can still useStandardRouter
- seeautopaho/examples/router
). ClientConfig
is now private (accessing this led to race conditions).Pinger
interface has changed (andDefaultPinger
has been rewritten).ClientOptions.MIDs
has been removed.
autopaho
autopaho
CleanSession flag. PreviouslyCleanSession
was hardcoded totrue
; this is no longer the case and
the default isfalse
. Whilst his is potentially a breaking change,SessionExpiryInterval
will default to 0 meaning
the session will be removed when the connection drops. As a result this change should have no impact on most users; it
may be a problem if another application has connected withSessionExpiryInterval>0
meaning a session exists.
Thanks to all contributors (with special thanks to those who helped to test this release!).
What's Changed (excluding a lot of minor changes)
- Implement session state (full QOS1/2 support) and publish queue by @MattBrittan in #172
- Consistent config structure in autopaho and rename "broker" to "server" by @MattBrittan in #188
- Remove SingleHandlerRouter by @MattBrittan in #186
- Pass
*url.URL
to ConnectPacketBuilder by @XANi in #206 - Replace Router with OnPublishReceived Callback by @MattBrittan in #211
- Remove router from most tests and examples. by @MattBrittan in #215
- Update CONTRIBUTING.md by @minyukim in #218
- Re-authentication with MQTT5 Enhanced Authentication (AUTH packet exchange) in autopaho by @minyukim in #219
- paho
Client.ClientConfig
is now private by @MattBrittan in #221 - license - clarify licensing in line with Eclipse Paho standard by @MattBrittan in #224
- New pinger implementation by @vishnureddy17 in #222
- Tidy up Mu, termination process and keep alive by @MattBrittan in #229
- Address issues with queue error handling in autopaho, return ErrInvalidArguments for invalid publish QoS in paho by @vishnureddy17 in #235
New Contributors
Full Changelog: v0.12.0...v0.20.0