182 lines
8.6 KiB
Markdown
182 lines
8.6 KiB
Markdown
|
<!--
|
|||
|
.. title: Version 1.0 released
|
|||
|
.. slug: version-1-0-released
|
|||
|
.. date: 2012-08-14 00:12:52
|
|||
|
.. tags: Releases
|
|||
|
.. category:
|
|||
|
.. link:
|
|||
|
.. description:
|
|||
|
.. type: text
|
|||
|
-->
|
|||
|
|
|||
|
This is a feature and bugfix release. This is the most significant release for
|
|||
|
the mosquitto project so far. It encompasses >20% of the total commits for
|
|||
|
the project and has an increase in source tarball size of 95%, mostly down to
|
|||
|
the new bundled tests and new man pages. It introduces lots of new features for
|
|||
|
the broker and improves the API of the client libraries, although this does
|
|||
|
mean that the libraries are incompatible with previous releases. I apologise
|
|||
|
for this and hope you'll agree that the changes are worth it.
|
|||
|
|
|||
|
I've been overwhelmed with the amount of feedback that I've received recently,
|
|||
|
thanks to everyone that has got in touch to let me know where something could
|
|||
|
be improved. I'd particularly like to thank Nicholas Humfrey for setting me on
|
|||
|
the continuous integration path.
|
|||
|
|
|||
|
On a slightly different note, my wife was expecting our first child two days
|
|||
|
ago so it's quite likely I'll be less responsive to support requests for a
|
|||
|
little while.
|
|||
|
|
|||
|
# Significant changes
|
|||
|
|
|||
|
These are what I think are the exciting changes for this release.
|
|||
|
|
|||
|
* SSL/TLS support across the board - the broker, client libraries and pub/sub
|
|||
|
clients. This provides certificate based network encryption in a very
|
|||
|
similar manner to SSL in a web browser where the client verifies that the
|
|||
|
server is valid. It is also possible to use client certificates to
|
|||
|
authenticate the clients with the server.
|
|||
|
* TLS-PSK support (not on Python). This is "pre-shared-key" network encryption
|
|||
|
and represents a simpler encryption interface than certificate based
|
|||
|
encryption which makes it much more suitable for embedded/constrained
|
|||
|
devices.
|
|||
|
* The Python client library is now written in pure Python so is much easier to
|
|||
|
use. It supports Python 2.6, 2.7 and 3.\* (no SSL support for 2.6).
|
|||
|
* All client libraries have had their interface overhauled and should now be
|
|||
|
much saner and straightforward to use.
|
|||
|
* The client libraries have thread support.
|
|||
|
* Passwords files for the broker are stored hashed and salted and a utility
|
|||
|
for maintaining them has been provided.
|
|||
|
* It is now possible to write access and authentication plugins for the broker
|
|||
|
for providing custom support for authentication against e.g. a SQL database.
|
|||
|
* Implementation of a good test suite which has lead to improved protocol
|
|||
|
compliance amongst other bug fixes.
|
|||
|
* Masses of bug fixes.
|
|||
|
|
|||
|
# Downloads
|
|||
|
|
|||
|
Source is available on the [download page], the binary packages will follow as
|
|||
|
soon as possible. Windows and Ubuntu packages are currently available, more to
|
|||
|
follow.
|
|||
|
|
|||
|
# Changes
|
|||
|
|
|||
|
The complete list of changes is below:
|
|||
|
|
|||
|
# The broker
|
|||
|
|
|||
|
* Add SSL/TLS support.
|
|||
|
* Add TLS-PSK support, providing a simpler encryption method for constrained
|
|||
|
devices.
|
|||
|
* Passwords are now salted+hashed if compiled with WITH_TLS (recommended).
|
|||
|
* Add mosquitto_passwd for handling password files.
|
|||
|
* Add $SYS/broker/publish/messages/{sent|received} to show the number of
|
|||
|
PUBLISH messages sent/received.
|
|||
|
* Add $SYS/broker/publish/bytes/{sent|received} to show the number of PUBLISH
|
|||
|
bytes sent/received.
|
|||
|
* Add reload parameter for security init/cleanup functions.
|
|||
|
* Add option for expiring disconnected persistent clients.
|
|||
|
* Add option for queueing of QoS 0 messages when persistent clients are
|
|||
|
disconnected.
|
|||
|
* Enforce client id limits in the broker (only when WITH_STRICT_PROTOCOL is
|
|||
|
defined).
|
|||
|
* Fix reloading of log configuration.
|
|||
|
* Add support for `try_private` config option for bridge connections.
|
|||
|
* Add support for `autosave_on_changes` config option.
|
|||
|
* Add support for `include_dir` config option.
|
|||
|
* Add support for topic remapping.
|
|||
|
* Usernames were being lost when a non clean-session client reconnected,
|
|||
|
potentially causing problems with ACLs. This has been fixed.
|
|||
|
* Significant improvement to memory handling on Windows.
|
|||
|
* Bridges with outgoing topics will now set the retain flag correctly so that
|
|||
|
messages will be retained on the remote broker.
|
|||
|
* Incoming bridge connections are now detected by checking if bit 8 of the
|
|||
|
protocol version number is set. This requires support from the remote
|
|||
|
broker.
|
|||
|
* Add support for `notification_topic` option.
|
|||
|
* Add $SYS/broker/subscriptions/count and $SYS/broker/retained messages/count.
|
|||
|
* Add `restart_timeout` to control the amount of time an automatic bridge will
|
|||
|
wait before reconnecting.
|
|||
|
* Overlapping subscriptions are now handled properly. Fixes bug #928538.
|
|||
|
* Fix reloading of `persistence_file` and `persistence_location`.
|
|||
|
* Fix broker crash on incorrect protocol number.
|
|||
|
* Fix missing COMPAT_ECONNRESET define on Windows.
|
|||
|
* Clients that had disconnected were not always being detected immediately on
|
|||
|
Linux. This has been fixed.
|
|||
|
* Don't save $SYS messages to the on-disk persistent db. All $SYS messages
|
|||
|
should be reconstructed on a restart. This means bridge connection
|
|||
|
notifications will now be correct on a restart.
|
|||
|
* Fix reloading of bridge clients from the persistent db. This means that
|
|||
|
outgoing bridged topics should always work.
|
|||
|
* Local bridges are now no longer restricted by local ACLs.
|
|||
|
* Discard publish messages with zero length topics.
|
|||
|
* Drop to "mosquitto" user even if no config file specified.
|
|||
|
* Don't incorrectly allow topic access if ACL patterns but no normal ACL rules
|
|||
|
are defined.
|
|||
|
|
|||
|
## The client libraries
|
|||
|
|
|||
|
* Add SSL/TLS support.
|
|||
|
* Add TLS-PSK support, providing a simpler encryption method for constrained
|
|||
|
devices.
|
|||
|
* Add javascript/websockets client library.
|
|||
|
* Add `struct mosquitto *mosq` parameter for all callbacks in the client
|
|||
|
library. This is a binary incompatible change so the soversion of the
|
|||
|
libraries has been incremented. The new parameter should make it easier to
|
|||
|
use callbacks in practice.
|
|||
|
* Add `mosquitto_want_write()` for use when using own select() loop with
|
|||
|
`mosquitto_socket()`.
|
|||
|
* Add `mosquitto_connect_async()` to provide a non-blocking connect client call.
|
|||
|
* Add `mosquitto_user_data_set()` to allow user data pointer to be updated.
|
|||
|
* Add "int rc" parameter to disconnect callback to indicate whether disconnect
|
|||
|
was unexpected or the result of calling `mosquitto_disconnect()`.
|
|||
|
* Add `mosquitto_strerror()` for obtaining a string description of error numbers.
|
|||
|
* Add `mosquitto_connack_string()` for obtaining a string description of MQTT
|
|||
|
connection results.
|
|||
|
* Add `mosquitto_will_clear()` and change `mosquitto_will_set()` to only set the
|
|||
|
will.
|
|||
|
* Add `mosquitto_sub_topic_tokenise()` and `mosquitto_sub_topic_tokens_free()`
|
|||
|
utility functions to tokenise a subscription/topic string into a string
|
|||
|
array.
|
|||
|
* Add `mosquitto_topic_matches_sub()` to check whether a topic matches a
|
|||
|
subscription.
|
|||
|
* Replaced `mosquitto_log_init()` with `mosquitto_log_callback_set()` to allow
|
|||
|
clients to decide what to do with log messages.
|
|||
|
* Client will now disconnect itself from the broker if it doesn't receive a
|
|||
|
PINGRESP in the keepalive period after sending a PINGREQ.
|
|||
|
* Client will now send a PINGREQ if it has not received a message from the
|
|||
|
broker in keepalive seconds.
|
|||
|
* `mosquitto_new()` will now generate a random client id if the id parameter
|
|||
|
is NULL.
|
|||
|
* Added `max_packets` to `mosquitto_loop()`, `mosquitto_loop_read()` and
|
|||
|
`mosquitto_loop_write()` to control the maximum number of packets that are
|
|||
|
handled per call.
|
|||
|
* Payload parameters are now void * instead of uint8\_t \*.
|
|||
|
* The `clean_session` parameter has been moved from `mosquitto_connect()` to
|
|||
|
`mosquitto_new()` because it is a client parameter rather than a connection
|
|||
|
parameter.
|
|||
|
* Functions now use int instead of uint\*\_t where possible.
|
|||
|
* `mosquitto_new()` now sets errno to indicate failure type.
|
|||
|
* Return `MOSQ_ERR_INVAL` on zero length topic.
|
|||
|
* Fix automatic client id generation on Windows.
|
|||
|
* `mosquitto_loop_misq()` can now return `MOSQ_ERR_NO_CONN`.
|
|||
|
* Compile static library as well as dynamic library with default makefiles.
|
|||
|
* Rename C++ namespace from mosquittopp to mosqpp to remove ambiguity.
|
|||
|
* C++ `lib_init()`, `lib_version()` and `lib_cleanup()` are now in the mosqpp
|
|||
|
namespace directly, not mosquittopp class members.
|
|||
|
* The Python library is now written in pure Python and so no longer depends on
|
|||
|
libmosquitto.
|
|||
|
* The Python library includes SSL/TLS support.
|
|||
|
* The Python library should now be compatible with Python 3.
|
|||
|
|
|||
|
## Other
|
|||
|
|
|||
|
* Fix db_dump reading of retained messages.
|
|||
|
* Add example of logging all messages to mysql.
|
|||
|
* Add C++ client example.
|
|||
|
* Fix potential buffer overflow in pub/sub clients.
|
|||
|
* Add "make binary" target that doesn't make documents.
|
|||
|
* Add `--help` arguments to pub/sub clients.
|
|||
|
* Fix building on Solaris.
|
|||
|
|
|||
|
[download page]: /download
|