This is a feature and bugfix release. # Broker * Add $SYS/broker/messages/dropped * Add $SYS/broker/clients/expired * Replace $SYS/broker/+/per second/+ with moving average versions published at $SYS/broker/load/# * Add $SYS/broker/load/sockets/+ and $SYS/broker/load/connections/+ * Documentation on password file format has been fixed. * Disable SSL compression. This reduces memory usage significantly and removes the possibility of CRIME type attacks. * Enable SSL_MODE_RELEASE_BUFFERS mode to reduce SSL memory usage further. * Add allow_duplicate_messages option. * ACL files can now have comment lines with # as the first character. * Display message on startup about which config is being loaded. * Fix `max_inflight_messages` and `max_queued_messages` not being applied. * Fix documentation error in mosquitto.conf. * Ensure that QoS 2 queued messages are sent out in a timely manner. * Local bridges now act on `clean_session` correctly. * Local bridges with `clean_session==false` now remove unused subscriptions on broker restart. * The $SYS/broker/heap/# messages now no longer include "bytes" as part of the string for ease of use. # Client library * Free memory used by OpenSSL in `mosquitto_lib_cleanup()` where possible. * Change WebSocket subprotocol name to mqttv3.1 to make future changes easier and for compatibility with other implementations. * `mosquitto_loop_read()` and `mosquitto_loop_write()` now handle errors themselves rather than having `mosquitto_loop()` handle their errors. This makes using them in a separate event loop more straightforward. * Add `mosquitto_loop_forever()` / `loop_forever()` function call to make simple clients easier. * Disable SSL compression. This reduces memory usage significantly and removes the possibility of CRIME type attacks. * Enable SSL_MODE_RELEASE_BUFFERS mode to reduce SSL memory usage further. * `mosquitto_tls_set()` will now return an error or raise an exception immediately if the CA certificate or client certificate/key cannot be accessed. * Fix potential memory leaks on connection failures. * Don't produce return error from `mosquitto_loop()` if a system call is interrupted. This prevents disconnects/reconnects in threaded mode and simplifies non-threaded client handling. * Ignore SIGPIPE to prevent unnecessary client quits in threaded mode. * Fix document error for `mosquitto_message_retry_set()`. * Fix `mosquitto_topic_matches_sub()` for subscriptions with + as the final character. Fixes bug #1085797. * Rename all "obj" parameters to "userdata" for consistency with other libraries. * Reset errno before network read/write to ensure EAGAIN isn't mistakenly returned. * The message queue length is now tracked and used to determine the maximum number of packets to process at once. This removes the need for the `max_packets` parameter which is now unused. * Fix incorrect error value in Python `error_string()` function. Fixes bug #1086777. * Reset last message in/out timer in Python module when we send a PINGREQ. Fixes too-early disconnects. # Clients * Clients now display their own version number and library version number in their help messages. * Fix `mosquitto_pub -l -q 2` disconnecting before all messages were transmitted. * Fix potential out-of-bounds array access with client ids. Fixes bug #1083182. # Other * mosquitto_passwd can now convert password files with plain text files to hashed versions.