v1.4.0
In the year since the release of v1.3.5 the majority of changes have been small incremental improvements/fixes. It is worth noting that the library has moved to the EPL v2.0 license (faq).
A few new features have been added:
- Managing the connection to the broker can become involved (e.g. setting unusual TCP/TLS options, need for a non-standard TLS library, require a specific web-socket library etc) and the library already has too many options! To address this a new option,
SetCustomOpenConectionFn
, has been added that enables users to provide a function (func(uri *url.URL, options ClientOptions) (net.Conn, error)
) that will be called to establish a connection (replacing the inbuilt code). This should enable edge cases to be addressed without the need for further changes to this library. - When connecting/reconnecting it is possible that there will be a lot of packets queued; in the past the library sent all of these packets as rapidly as possible when the connection came up. However this could saturate some network links causing the connection to drop (a vicious circle). The new option
SetMaxResumePubInFlight
allows a limit to be imposed; the library will send out the requested number of packets and then wait for acknowledgements before sending more (only applicable at QOS1+).
Thanks to everyone who submitted issues and contributed code (list of the main merged pull requests below):
What's Changed
- SetMaxResumePubInFlight option - limit inflight publish packets on resume by @MattBrittan in #521
- Test for PR 521 (forgot to commit) by @MattBrittan in #522
- Dont panic if there are files with short names in the file store folder. by @MattBrittan in #523
- Add license headers to all files and move from EPL v1.0 to EPL v2.0 by @MattBrittan in #524 / #525
- Add warning to Disconnect function by @MattBrittan in #537
- Use uri.Path instead of uri.Host for UNIX domain socket URLs by @webconn in #540
- CodeQL & integer conversion fix by @jfcg in #541
- Mosquitto related changes (updated config and comments). by @MattBrittan in #546
- README enhancements by @MattBrittan in #547 / #548
- Improve handling of SUBSCRIBE/UNSUBSCRIBE over disconnect/reconnect. by @MattBrittan in #557
- log err.error() if ConnectRetry is enabled by @TomasVojacek in #558
- Add tcp option to set keep alive value on the tcp layer by @mogaleaf in #561
- Document token.Wait behaviour during reconnect by @ecksun in #565
- Custom open connection for different network types by @GilGil1 in #574 / #575
- nil c.options.Dialer caused a panic. by @MattBrittan in #577
- Disconnect refactor by @ptsneves in #586
- client.go Remove Disconnect()'s wait on c.commsStopped. by @ptsneves in #590
New Contributors
- @webconn made their first contribution in #540
- @jfcg made their first contribution in #541
- @TomasVojacek made their first contribution in #558
- @mogaleaf made their first contribution in #561
- @ecksun made their first contribution in #565
- @GilGil1 made their first contribution in #574
- @ptsneves made their first contribution in #586
Full Changelog: v1.3.5...v1.4.0