Mosquitto now an Ubuntu Appliance

Ubuntu has just announced their new Ubuntu Appliance initiative, which provides self contained images for a number of different applications, for use on a Raspberry Pi or PC. These are full Ubuntu derivatives that use snap packages, so will keep up to date with the latest releases.

There are five different applications in the first set of appliances, and Mosquitto is one of them.

Read more at the Ubuntu blog.


Version 1.6.10 released.

Mosquitto 1.6.10 has been released, this is a bugfix release.

Broker

  • Report invalid bridge prefix+pattern combinations at config parsing time rather than letting the bridge fail later. Issue #1635.
  • Fix mosquitto_passwd -b not updating passwords for existing users correctly. Creating a new user with -b worked without problem. Closes #1664.
  • Fix memory leak when connecting clients rejected.
  • Don't disconnect clients that are already disconnected. This prevents the session expiry being extended on SIGHUP. Closes #1521.
  • Fix support for openssl 3.0.
  • Fix check when loading persistence file of a different version than the native version. Closes #1684.
  • Fix possible assert crash associated with bridge reconnecting when compiled without epoll support. Closes #1700.

Client library

  • Don't treat an unexpected PUBACK, PUBREL, or PUBCOMP as a fatal error. Issue #1629.
  • Fix support for openssl 3.0.
  • Fix memory leaks from multiple calls to mosquitto_lib_init()/mosquitto_lib_cleanup(). Closes #1691.
  • Fix documentation on return code of mosquitto_lib_init() for Windows. Closes #1690.

Clients

  • Fix mosquitto_sub %j or %J not working on Windows. Closes #1674.

Build

  • Various fixes for building with below C99 support. Closes #1622.
  • Fix use of sed on BSD. Closes #1614.

Version 1.6.9 released.

Mosquitto 1.6.9 has been released, this is a bugfix release.

Broker

  • Fix session expiry with very large expiry intervals. Closes #1525.
  • Check ACL patterns for validity when loading. Closes #1539.
  • Use presence of password file as indicator for whether username checks should take place, not whether usernames are defined in the password file. Closes #1545.
  • Strip whitespace from end of config file string options. Closes #1566.
  • Satisfy valgrind when exiting on error due to not being able to open a listening socket, by calling freeaddrinfo. Closes #1565.
  • Fix config->user not being freed on exit. Closes #1564.
  • Fix trailing whitespace not being trimmed on acl users. Closes #1539.
  • Fix bind_interface not working for the default listener. Closes #1533.
  • Improve password file parsing in the broker and mosquitto_passwd. Closes #1584.
  • Print OpenSSL errors in more situations, like when loading certificates fails. Closes #1552.
  • Fix mosquitto_client_protocol() returning incorrect values.

Client library

  • Set minimum keepalive argument to mosquitto_connect*() to be 5 seconds. Closes #1550.
  • Fix mosquitto_topic_matches_sub() not returning MOSQ_ERR_INVAL if the topic contains a wildcard. Closes #1589.

Clients

  • Fix --remove-retained not obeying the -T option for filtering out topics. Closes #1585.
  • Default behaviour for v5 clients using -c is now to use infinite length sessions, as with v3 clients. Closes #1546.

Version 1.6.8 released.

Mosquitto 1.6.8 has been released, this is a bugfix release.

Broker

  • Various fixes for allow_zero_length_clientid config, where this option was not being set correctly. Closes #1429.
  • Fix incorrect memory tracking causing problems with memory_limit option. Closes #1437.
  • Fix subscription topics being limited to 200 characters instead of 200 hierarchy levels. Closes #1441.
  • Only a single CRL could be loaded at once. This has been fixed. Closes #1442.
  • Fix problems with reloading config when per_listener_settings was true. Closes #1459.
  • Fix retained messages with an expiry interval not being expired after being restored from persistence. Closes #1464.
  • Fix messages with an expiry interval being sent without an expiry interval property just before they were expired. Closes #1464.
  • Fix TLS Websockets clients not receiving messages after taking over a previous connection. Closes #1489.
  • Fix MQTT 3.1.1 clients using clean session false, or MQTT 5.0 clients using session-expiry-interval set to infinity never expiring, even when the global persistent_client_expiration option was set. Closes #1494.

Client library

  • Fix publish properties not being passed to on_message_v5() callback for QoS 2 messages. Closes #1432.
  • Fix documentation issues in mosquitto.h. Closes #1478.
  • Document mosquitto_connect_srv(). Closes #1499.

Clients

  • Fix duplicate cfg definition in rr_client. Closes #1453.
  • Fix mosquitto_pub -l hang when stdin stream ends. Closes #1448.
  • Fix mosquitto_pub -l not sending the final line of stdin if it does not end with a new line. Closes #1473.
  • Make documentation for mosquitto_pub -l match reality - blank lines are sent as empty messages. Closes #1474.
  • Free memory in mosquitto_sub when quiting without having made a successful connection. Closes #1513.

Build

  • Added CLIENT_STATIC_LDADD to makefile builds to allow more libraries to be linked when compiling the clients with a static libmosquitto, as required for e.g. openssl on some systems.

Installer

  • Fix mosquitto_rr.exe not being included in Windows installers. Closes #1463.

Streamsheets now open source

The Mosquitto project is sponsored by Cedalo. This week, Cedalo open sourced its core project, Streamsheets, which has Mosquitto as a key part. Streamsheets are real-time web based spreadsheets that can take input from a variety of data sources, process the data, and provide an output.

They are designed to allow non-programmers to build applications in IoT, industrial, or hobbiest environments, reading data from machines, sensors, APIs, and more.

Connectivity includes MQTT, OPC-UA, REST, file, and others.

If you need a front end for Mosquitto or other communication protocol, it would be worth looking at.

streamsheets screenshot

Some examples:

  • Create dynamic charts and dashboards to visualize your processes
  • Build real-time apps for condition monitoring and alerting
  • Merge data streams from different sources to calculate KPIs and enrich your data
  • Map protocols and change data structures to connect your resources
  • Model simple as well as complex control logic to orchestrate your processes

Download: https://cedalo.com/en/download/

Github: https://github.com/cedalo/streamsheets

Forum: https://forum.streamsheets.com/


Version 1.6.7 released.

Mosquitto 1.6.7 has been released, this is a bugfix release.

Broker

  • Add workaround for working with libwebsockets 3.2.0.
  • Fix potential crash when reloading config. Closes #1424, #1425.

Client library

  • Don't use / in autogenerated client ids, to avoid confusing with topics.
  • Fix mosquitto_max_inflight_messages_set() and mosquitto_int_option(..., MOSQ_OPT_*_MAX, ...) behaviour. Closes #1417.
  • Fix regression on use of mosquitto_connect_async() not working. Closes #1415 and #1422.

Clients

  • mosquitto_sub: Fix -E incorrectly not working unless -d was also specified. [Closes #1418].
  • Updated documentation around automatic client ids.

Version 1.6.5 released

This is a bugfix release.

Compatibility

  • The most recent version of libwebsockets (3.2.0) changed its behaviour and is not compatible with Mosquitto. This has been fixed for the next libwebsockets release. The 1.6.5 release refuses to compile with libwebsockets 3.2.0. All previous versions of Mosquitto that use websockets are affected by the change in behaviour.

Broker

  • Fix v5 DISCONNECT packets with remaining length == 2 being treated as a protocol error. Closes #1367.
  • Fix support for libwebsockets 3.x (excluding 3.2.0)
  • Fix slow websockets performance when sending large messages. Closes #1390.
  • Fix bridges potentially not connecting on Windows. Closes #478.
  • Fix clients authorised using use_identity_as_username or use_subject_as_username being disconnected on SIGHUP. Closes #1402.
  • Improve error messages in some situations when clients disconnect. Reduces the number of "Socket error on client X, disconnecting" messages.
  • Fix Will for v5 clients not being sent if will delay interval was greater than the session expiry interval. Closes #1401.
  • Fix CRL file not being reloaded on HUP. Closes #35.
  • Fix repeated "Error in poll" messages on Windows when only websockets listeners are defined. Closes #1391.

Client library

  • Fix reconnect backoff for the situation where connections are dropped rather than refused. Closes #737.
  • Fix missing locks on mosq->state. Closes #1374.

Documentation

  • Improve details on global/per listener options in the mosquitto.conf man page. Closes #274.
  • Clarify behaviour when clients exceed the message_size_limit. Closes #448.
  • Improve documentation for max_inflight_bytes, max_inflight_messages, and max_queued_messages.

Build

  • Fix missing function warnings on NetBSD.
  • Fix WITH_STATIC_LIBRARIES using CMake on Windows. Closes #1369.
  • Guard ssize_t definition on Windows. Closes #522.

Version 1.6.4 released

This is a bugfix release.

Broker

  • Fix persistent clients being incorrectly expired on Raspberry Pis. Closes #1272.
  • Windows: Allow other applications access to the log file when running. Closes #515.
  • Fix incoming QoS 2 messages being blocked when max_inflight_messages was set to 1. Closes #1332.
  • Fix incoming messages not being removed for a client if the topic being published to does not have any subscribers. Closes #1322.

Client library

  • Fix MQTT v5 subscription options being incorrectly set for MQTT v3 subscriptions. Closes #1353.
  • Make behaviour of mosquitto_connect_async() consistent with mosquitto_connect() when connecting to a non-existent server. Closes #1345.
  • mosquitto_string_option(mosq, MOSQ_OPT_TLS_KEYFORM, ...) was incorrectly returning MOSQ_ERR_INVAL with valid input. This has been fixed. Closes #1360.
  • on_connect callback is now called with the correct v5 reason code if a v5 client connects to a v3.x broker and is sent a CONNACK with the "unacceptable protocol version" connack reason code.
  • Fix memory leak when setting v5 properties in mosquitto_connect_v5().
  • Fix properties not being sent on QoS>0 PUBLISH messages.

Clients

  • mosquitto_pub: fix error codes not being returned when mosquitto_pub exits. Closes #1354.
  • All clients: improve error messages when connecting to a v3.x broker when in v5 mode. Closes #1344.

Other

  • Various documentation fixes.

Version 1.6.3 released

This is a bugfix release.

Broker

  • Fix detection of incoming v3.1/v3.1.1 bridges. Closes #1263.
  • Fix default max_topic_alias listener config not being copied to the in-use listener when compiled without TLS support.
  • Fix random number generation if compiling using WITH_TLS=no and on Linux with glibc >= 2.25. Without this fix, no random numbers would be generated for e.g. on broker client id generation, and so clients connecting expecting this feature would be unable to connect.
  • Fix compilation problem related to getrandom() on non-glibc systems.
  • Fix Will message for a persistent client incorrectly being sent when the client reconnects after a clean disconnect. Closes #1273.
  • Fix Will message for a persistent client not being sent on disconnect. Closes #1273.
  • Improve documentation around the upgrading of persistence files. Closes #1276.
  • Add 'extern "C"' on mosquitto_broker.h and mosquitto_plugin.h for C++ plugin writing. Closes #1290.
  • Fix persistent Websockets clients not receiving messages after they reconnect, having sent DISCONNECT on a previous session. Closes #1227.
  • Disable TLS renegotiation. Client initiated renegotiation is considered to be a potential attack vector against servers. Closes #1257.
  • Fix incorrect shared subscription topic '$shared'.
  • Fix zero length client ids being rejected for MQTT v5 clients with clean start set to true.
  • Fix MQTT v5 overlapping subscription behaviour. Clients now receive message from all matching subscriptions rather than the first one encountered, which ensures the maximum QoS requirement is met.
  • Fix incoming/outgoing quota problems for QoS>0.
  • Remove obsolete store_clean_interval from documentation.

Client library

  • Fix typo causing build error on Windows when building without TLS support. Closes #1264.

Clients

  • Fix -L url parsing when /topic part is missing.
  • Stop some error messages being printed even when --quiet was used. Closes #1284.
  • Fix mosquitto_pub exiting with error code 0 when an error occurred. Closes #1285.
  • Fix mosquitto_pub not using the -c option. Closes #1273.
  • Fix MQTT v5 clients not being able to specify a password without a username. Closes #1274.
  • Fix mosquitto_pub -l not handling network failures. Closes #1152.
  • Fix mosquitto_pub -l not handling zero length input. Closes #1302.
  • Fix double free on exit in mosquitto_pub. Closes #1280.

Documentation:

  • Remove references to Python binding and C++ wrapper in libmosquitto man page. Closes #1266.

Build

  • CLIENT_LDFLAGS now uses LDFLAGS. Closes #1294.