Skip to content

0.20

Compare
Choose a tag to compare
@MattBrittan MattBrittan released this 03 Feb 03:24
· 31 commits to master since this release
12afa9c

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 replace ClientConfig.Router with ClientConfig.OnPublishReceived (which is more flexible; note that
      you can still use StandardRouter - see autopaho/examples/router).
    • ClientConfig is now private (accessing this led to race conditions).
    • Pinger interface has changed (and DefaultPinger has been rewritten).
    • ClientOptions.MIDs has been removed.
  • autopaho
    • autopaho CleanSession flag. Previously CleanSession was hardcoded to true; this is no longer the case and
      the default is false. 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 with SessionExpiryInterval>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