This allows a big swath of ifdefs to be removed. It also means savings as the db var is not passed around all of the time, and makes it easier to remove the final broker call to mosquitto_time() call in packet_mosq.c. In one test this reduced the calls to mosquitto_time() from 295k to 48k.
This adds the ability to separating bridge clean session settings between
the local and remote endpoints. Some broker implmentations refuse to allow
non-clean sessions, as they don't support storing messages to be sent to
the connecting broker. However, this doesn't mean that the local
broker can't be queueing messages to send _out_ to the remote broker.
This PR adds a new bridge connection setting, local_cleansession, that
allows controlling this split. Naming is chosen to be local_ in keeping
with the other local_ settings for bridges.
A test for the six cases of queued/not queued messages in both
directions is added, but v5 testing is currently disabled. The changes
to support the split are ~independent of protocol version.
Signed-off-by: Karl Palsson <karlp@etactica.com>
WebSocket context may lost since db->ll_for_free = NULL; operation on the bottom of context__free_disused() function.
Signed-off-by: Michael Liu <michael.liu.point@gmail.com>
* Fix Will message for a persistent client incorrectly being sent when the client reconnects after a clean disconnect.
* Fix Will message for a persistent client not being sent on disconnect.
* Fix mosquitto_pub not using the `-c` option.
Thanks to Yannic Schröder.
Closes#1273.
This includes changes to improve read/write performance.
It is not complete, and will have further changes to add properties and anything else required for MQTT v5.
This comes in the form of:
* Per listener maximum_qos option, which can be in the range 0-2.
* Changes to mosquitto_publish*() to return MOSQ_ERR_QOS_NOT_SUPPORTED
if attempting to publish with a higher QoS than supported.
* Bridges will downgrade messages to match the maximum QoS.
More tests on the broker side (specifically bridges) are required. This
needs bridge support for MQTT 5 first.