ChangeLog.txt 135.3 KB
Newer Older
1
2.0.17 - 2023-08-22
2 3 4
===================

Broker:
5
- Fix `max_queued_messages 0` stopping clients from receiving messages.
6
  Closes #2879.
7
- Fix `max_inflight_messages` not being set correctly. Closes #2876.
8

9 10 11
Apps:
- Fix `mosquitto_passwd -U` backup file creation. Closes #2873.

12

R
Roger A. Light 已提交
13 14 15
2.0.16 - 2023-08-16
===================

16
Security:
R
Roger A. Light 已提交
17 18 19
- CVE-2023-28366: Fix memory leak in broker when clients send multiple QoS 2
  messages with the same message ID, but then never respond to the PUBREC
  commands.
R
Roger A. Light 已提交
20 21 22
- CVE-2023-0809: Fix excessive memory being allocated based on malicious
  initial packets that are not CONNECT packets.
- CVE-2023-3592: Fix memory leak when clients send v5 CONNECT packets with a
23
  will message that contains invalid property types.
24 25 26
- Broker will now reject Will messages that attempt to publish to $CONTROL/.
- Broker now validates usernames provided in a TLS certificate or TLS-PSK
  identity are valid UTF-8.
27 28
- Fix potential crash when loading invalid persistence file.
- Library will no longer allow single level wildcard certificates, e.g. *.com
29

30 31 32
Broker:
- Fix $SYS messages being expired after 60 seconds and hence unchanged values
  disappearing.
33
- Fix some retained topic memory not being cleared immediately after used.
34
- Fix error handling related to the `bind_interface` option.
35 36
- Fix std* files not being redirected when daemonising, when built with
  assertions removed. Closes #2708.
37
- Fix default settings incorrectly allowing TLS v1.1. Closes #2722.
38
- Use line buffered mode for stdout. Closes #2354. Closes #2749.
39 40
- Fix bridges with non-matching cleansession/local_cleansession being expired
  on start after restoring from persistence. Closes #2634.
41 42
- Fix connections being limited to 2048 on Windows. The limit is now 8192,
  where supported. Closes #2732.
43 44 45
- Broker will log warnings if sensitive files are world readable/writable, or
  if the owner/group is not the same as the user/group the broker is running
  as. In future versions the broker will refuse to open these files.
46
- mosquitto_memcmp_const is now more constant time.
47
- Only register with DLT if DLT logging is enabled.
48 49 50
- Fix any possible case where a json string might be incorrectly loaded. This
  could have caused a crash if a textname or textdescription field of a role was
  not a string, when loading the dynsec config from file only.
51 52
- Dynsec plugin will not allow duplicate clients/groups/roles when loading
  config from file, which matches the behaviour for when creating them.
53
- Fix heap overflow when reading corrupt config with "log_dest file".
54

R
Roger A. Light 已提交
55 56 57 58
Client library:
- Use CLOCK_BOOTTIME when available, to keep track of time. This solves the
  problem of the client OS sleeping and the client hence not being able to
  calculate the actual time for keepalive purposes. Closes #2760.
59
- Fix default settings incorrectly allowing TLS v1.1. Closes #2722.
60
- Fix high CPU use on slow TLS connect. Closes #2794.
R
Roger A. Light 已提交
61

62 63
Clients:
- Fix incorrect topic-alias property value in mosquitto_sub json output.
64
- Fix confusing message on TLS certificate verification. Closes #2746.
65

66 67
Apps:
- mosquitto_passwd uses mkstemp() for backup files.
68 69
- `mosquitto_ctrl dynsec init` will refuse to overwrite an existing file,
  without a race-condition.
70

71

72
2.0.15 - 2022-08-16
R
Roger A. Light 已提交
73 74
===================

75 76 77 78 79 80 81 82
Security:
- Deleting the group configured as the anonymous group in the Dynamic Security
  plugin, would leave a dangling pointer that could lead to a single crash.
  This is considered a minor issue - only administrative users should have
  access to dynsec, the impact on availability is one-off, and there is no
  associated loss of data. It is now forbidden to delete the group configured
  as the anonymous group.

R
Roger A. Light 已提交
83 84 85
Broker:
- Fix memory leak when a plugin modifies the topic of a message in
  MOSQ_EVT_MESSAGE.
R
Roger A. Light 已提交
86
- Fix bridge `restart_timeout` not being honoured.
R
Roger A. Light 已提交
87 88
- Fix potential memory leaks if a plugin modifies the message in the
  MOSQ_EVT_MESSAGE event.
89 90
- Fix unused flags in CONNECT command being forced to be 0, which is not
  required for MQTT v3.1. Closes #2522.
91 92
- Improve documentation of `persistent_client_expiration` option.
  Closes #2404.
93 94
- Add clients to session expiry check list when restarting and reloading from
  persistence. Closes #2546.
95 96
- Fix bridges not sending failure notification messages to the local broker if
  the remote bridge connection fails. Closes #2467. Closes #1488.
97
- Fix some PUBLISH messages not being counted in $SYS stats. Closes #2448.
98 99
- Fix incorrect return code being sent in DISCONNECT when a client session is
  taken over. Closes #2607.
100 101
- Fix confusing "out of memory" error when a client is kicked in the dynamic
  security plugin. Closes #2525.
102 103
- Fix confusing error message when dynamic security config file was a
  directory. Closes #2520.
104 105
- Fix bridge queued messages not being persisted when local_cleansession is
  set to false and cleansession is set to true. Closes #2604.
106 107 108
- Dynamic security: Fix modifyClient and modifyGroup commands to not modify
  the client/group if a new group/client being added is not valid.
  Closes #2598.
109 110 111 112
- Dynamic security: Fix the plugin being able to be loaded twice. Currently
  only a single plugin can interact with a unique $CONTROL topic. Using
  multiple instances of the plugin would produce duplicate entries in the
  config file. Closes #2601. Closes #2470.
113 114
- Fix case where expired messages were causing queued messages not to be
  delivered. Closes #2609.
115
- Fix websockets not passing on the X-Forwarded-For header.
R
Roger A. Light 已提交
116

117 118 119
Client library:
- Fix threads library detection on Windows under cmake. Bumps the minimum
  cmake version to 3.1, which is still ancient.
120 121
- Fix use of `MOSQ_OPT_TLS_ENGINE` being unable to be used due to the openssl
  ctx not being initialised until starting to connect. Closes #2537.
R
Roger A. Light 已提交
122
- Fix incorrect use of SSL_connect. Closes #2594.
123
- Don't set SIGPIPE to ignore, use MSG_NOSIGNAL instead. Closes #2564.
124
- Add documentation of struct mosquitto_message to header. Closes #2561.
125
- Fix documentation omission around mosquitto_reinitialise. Closes #2489.
126 127
- Fix use of MOSQ_OPT_SSL_CTX when used in conjunction with
  MOSQ_OPT_SSL_CTX_DEFAULTS. Closes #2463.
128
- Fix failure to close thread in some situations. Closes #2545.
129

R
Roger A. Light 已提交
130 131 132
Clients:
- Fix mosquitto_pub incorrectly reusing topic aliases when reconnecting.
  Closes #2494.
R
Roger A. Light 已提交
133

134 135 136 137 138
Apps:
- Fix `-o` not working in `mosquitto_ctrl`, and typo in related documentation.
  Closes #2471.


R
Roger A. Light 已提交
139
2.0.14 - 2021-11-17
140 141 142 143 144
===================

Broker:
- Fix bridge not respecting receive-maximum when reconnecting with MQTT v5.

145 146 147
Client library:
- Fix mosquitto_topic_matches_sub2() not using the length parameters.
  Closes #2364.
148
- Fix incorrect subscribe_callback in mosquittopp.h. Closes #2367.
149 150


R
Roger A. Light 已提交
151
2.0.13 - 2021-10-27
152 153 154 155
===================

Broker:
- Fix `max_keepalive` option not being able to be set to 0.
156 157
- Fix LWT messages not being delivered if `per_listener_settings` was set to
  true. Closes #2314.
158
- Various fixes around inflight quota management. Closes #2306.
159
- Fix problem parsing config files with Windows line endings. Closes #2297.
160
- Don't send retained messages when a shared subscription is made.
161
- Fix log being truncated in Windows.
162
- Fix client id not showing in log on failed connections, where possible.
163 164
- Fix broker sending duplicate CONNACK on failed MQTT v5 reauthentication.
  Closes #2339.
165
- Fix mosquitto_plugin.h not including mosquitto_broker.h. Closes #2350.
166 167
- Fix unlimited message quota not being properly checked for incoming
  messages. Closes #2593.
168
- Fixed build for openssl compiled with OPENSSL_NO_ENGINE. Closes #2589.
169

170 171 172 173
Client library:
- Initialise sockpairR/W to invalid in `mosquitto_reinitialise()` to avoid
  closing invalid sockets in `mosquitto_destroy()` on error. Closes #2326.

174 175 176
Clients:
- Fix date format in mosquitto_sub output. Closes #2353.

177

R
Roger A. Light 已提交
178
2.0.12 - 2021-08-31
179 180
===================

181
Security:
182 183 184
- An MQTT v5 client connecting with a large number of user-property properties
  could cause excessive CPU usage, leading to a loss of performance and
  possible denial of service. This has been fixed.
185 186 187 188
- Fix `max_keepalive` not applying to MQTT v3.1.1 and v3.1 connections.
  These clients are now rejected if their keepalive value exceeds
  max_keepalive. This option allows CVE-2020-13849, which is for the MQTT
  v3.1.1 protocol itself rather than an implementation, to be addressed.
R
Roger Light 已提交
189 190 191 192 193
- Using certain listener related configuration options e.g. `cafile`, that
  apply to the default listener without defining any listener would cause a
  remotely accessible listener to be opened that was not confined to the local
  machine but did have anonymous access enabled, contrary to the
  documentation. This has been fixed. Closes #2283.
R
Roger A. Light 已提交
194
- CVE-2021-34434: If a plugin had granted ACL subscription access to a
195 196
  durable/non-clean-session client, then removed that access, the client would
  keep its existing subscription. This has been fixed.
R
Roger A. Light 已提交
197 198 199
- Incoming QoS 2 messages that had not completed the QoS flow were not being
  checked for ACL access when a clean session=False client was reconnecting.
  This has been fixed.
200

201 202 203 204
Broker:
- Fix possible out of bounds memory reads when reading a corrupt/crafted
  configuration file. Unless your configuration file is writable by untrusted
  users this is not a risk. Closes #567213.
205
- Fix `max_connections` option not being correctly counted.
206 207
- Fix TLS certificates and TLS-PSK not being able to be configured at the same
  time.
208
- Disable TLS v1.3 when using TLS-PSK, because it isn't correctly configured.
209 210 211 212
- Fix `max_keepalive` not applying to MQTT v3.1.1 and v3.1 connections.
  These clients are now rejected if their keepalive value exceeds
  max_keepalive. This option allows CVE-2020-13849, which is for the MQTT
  v3.1.1 protocol itself rather than an implementation, to be addressed.
213 214
- Fix broker not quiting if e.g. the `password_file` is specified as a
  directory. Closes #2241.
215 216
- Fix listener mount_point not being removed on outgoing messages.
  Closes #2244.
217
- Strict protocol compliance fixes, plus test suite.
218 219
- Fix $share subscriptions not being recovered for durable clients that
  reconnect.
220
- Update plugin configuration documentation. Closes #2286.
221

R
Roger A. Light 已提交
222 223 224 225 226 227
Client library:
- If a client uses TLS-PSK then force the default cipher list to use "PSK"
  ciphers only. This means that a client connecting to a broker configured
  with x509 certificates only will now fail. Prior to this, the client would
  connect successfully without verifying certificates, because they were not
  configured.
228
- Disable TLS v1.3 when using TLS-PSK, because it isn't correctly configured.
229 230
- Threaded mode is deconfigured when the mosquitto_loop_start() thread ends,
  which allows mosquitto_loop_start() to be called again. Closes #2242.
231
- Fix MOSQ_OPT_SSL_CTX not being able to be set to NULL. Closes #2289.
232 233 234 235
- Fix reconnecting failing when MOSQ_OPT_TLS_USE_OS_CERTS was in use, but none
  of capath, cafile, psk, nor MOSQ_OPT_SSL_CTX were set, and
  MOSQ_OPT_SSL_CTX_WITH_DEFAULTS was set to the default value of true.
  Closes #2288.
R
Roger A. Light 已提交
236

237 238 239
Apps:
- Fix `mosquitto_ctrl dynsec setDefaultACLAccess` command not working.

240 241 242
Clients:
- mosquitto_sub and mosquitto_rr now open stdout in binary mode on Windows
  so binary payloads are not modified when printing.
243
- Document TLS certificate behaviour when using `-p 8883`.
244

245 246
Build:
- Fix installation using WITH_TLS=no. Closes #2281.
R
Roger A. Light 已提交
247 248
- Fix builds with libressl 3.4.0. Closes #2198.
- Remove some unnecessary code guards related to libressl.
249
- Fix printf format build warning on MIPS. Closes #2271.
R
Roger A. Light 已提交
250

251

252
2.0.11 - 2021-06-08
253 254
===================

255 256 257 258
Security:
- If a MQTT v5 client connects with a crafted CONNECT packet a memory leak
  will occur. This has been fixed.

259 260 261 262
Broker:
- Fix possible crash having just upgraded from 1.6 if `per_listener_settings
  true` is set, and a SIGHUP is sent to the broker before a client has
  reconnected to the broker. Closes #2167.
263 264
- Fix bridge not reconnectng if the first reconnection attempt fails.
  Closes #2207.
265
- Improve QoS 0 outgoing packet queueing.
266
- Fix non-reachable bridge blocking the broker on Windows. Closes #2172.
R
Roger A. Light 已提交
267
- Fix possible corruption of pollfd array on Windows when bridges were
268
  reconnecting. Closes #2173.
269 270
- Fix QoS 0 messages not being queued when `queue_qos0_messages` was enabled.
  Closes #2224.
271
- Fix openssl not being linked to dynamic security plugin. Closes #2277.
272

273 274 275
Clients:
- If sending mosquitto_sub output to a pipe, mosquitto_sub will now detect
  that the pipe has closed and disconnect. Closes #2164.
276 277
- Fix `mosquitto_pub -l` quitting if a message publication is attempted when
  the broker is temporarily unavailable. Closes #2187.
278 279


280
2.0.10 - 2021-04-03
281 282
==================

283
Security:
R
Roger A. Light 已提交
284
- CVE-2021-28166: If an authenticated client connected with MQTT v5 sent a
285
  malformed CONNACK message to the broker a NULL pointer dereference occurred,
R
Roger Light 已提交
286
  most likely resulting in a segfault.
287 288
  Affects versions 2.0.0 to 2.0.9 inclusive.

289 290 291
Broker:
- Don't over write new receive-maximum if a v5 client connects and takes over
  an old session. Closes #2134.
R
Roger A. Light 已提交
292
- Fix CVE-2021-28166. Closes #2163.
293

294 295 296
Clients:
- Set `receive-maximum` to not exceed the `-C` message count in mosquitto_sub
  and mosquitto_rr, to avoid potentially lost messages. Closes #2134.
297
- Fix TLS-PSK mode not working with port 8883. Closes #2152.
298

R
Roger Light 已提交
299 300 301 302 303 304
Client library:
- Fix possible socket leak. This would occur if a client was using
  `mosquitto_loop_start()`, then if the connection failed due to the remote
  server being inaccessible they called `mosquitto_loop_stop(, true)` and
  recreated the mosquitto object.

R
Roger Light 已提交
305 306 307
Build:
- A variety of minor build related fixes, like functions not having previous
  declarations.
308
- Fix CMake cross compile builds not finding opensslconf.h. Closes #2160.
R
Roger A. Light 已提交
309
- Fix build on Solaris non-sparc. Closes #2136.
R
Roger Light 已提交
310

311

312
2.0.9 - 2021-03-11
313 314
==================

315 316 317 318 319 320 321 322 323 324
Security:
- If an empty or invalid CA file was provided to the client library for
  verifying the remote broker, then the initial connection would fail but
  subsequent connections would succeed without verifying the remote broker
  certificate. Closes #2130.
- If an empty or invalid CA file was provided to the broker for verifying the
  remote broker for an outgoing bridge connection then the initial connection
  would fail but subsequent connections would succeed without verifying the
  remote broker certificate. Closes #2130.

325
Broker:
326 327
- Fix encrypted bridge connections incorrectly connecting when `bridge_cafile`
  is empty or invalid. Closes #2130.
328 329
- Fix `tls_version` behaviour not matching documentation. It was setting the
  exact TLS version to use, not the minimium TLS version to use. Closes #2110.
330
- Fix messages to `$` prefixed topics being rejected. Closes #2111.
331 332
- Fix QoS 0 messages not being delivered when max_queued_bytes was configured.
  Closes #2123.
R
Roger A. Light 已提交
333
- Fix bridge increasing backoff calculation.
334 335
- Improve handling of invalid combinations of listener address and bind
  interface configurations. Closes #2081.
336 337
- Fix `max_keepalive` option not applying to clients connecting with keepalive
  set to 0. Closes #2117.
338

339 340 341
Client library:
- Fix encrypted connections incorrectly connecting when the CA file passed to
  `mosquitto_tls_set()` is empty or invalid. Closes #2130.
342
- Fix connections retrying very rapidly in some situations.
343

R
Roger Light 已提交
344 345 346
Build:
- Fix cmake epoll detection.

347

R
Roger A. Light 已提交
348 349 350
2.0.8 - 2021-02-25
==================

351 352 353 354 355 356
Broker:
- Fix incorrect datatypes in `struct mosquitto_evt_tick`. This changes the
  size and offset of two of the members of this struct, and changes the size
  of the struct. This is an ABI break, but is considered to be acceptable
  because plugins should never be allocating their own instance of this
  struct, and currently none of the struct members are used for anything, so a
R
Roger A. Light 已提交
357 358
  plugin should not be accessing them. It would also be safe to read/write
  from the existing struct parameters.
359 360
- Give compile time warning if libwebsockets compiled without external poll
  support. Closes #2060.
361
- Fix memory tracking not being available on FreeBSD or macOS. Closes #2096.
362

363 364 365 366
Client library:
- Fix mosquitto_{pub|sub}_topic_check() functions not returning MOSQ_ERR_INVAL
  on topic == NULL.

367 368 369 370
Clients:
- Fix possible loss of data in `mosquitto_pub -l` when sending multiple long
  lines. Closes #2078.

371 372 373 374 375
Build:
- Provide a mechanism for Docker users to run a broker that doesn't use
  authentication, without having to provide their own configuration file.
  Closes #2040.

376

377 378 379
2.0.7 - 2021-02-04
==================

380 381
Broker:
- Fix exporting of executable symbols on BSD when building via makefile.
382
- Fix some minor memory leaks on exit only.
383
- Fix possible memory leak on connect. Closes #2057.
384
- Fix openssl engine not being able to load private key. Closes #2066.
385

386 387 388
Clients:
- Fix config files truncating options after the first space. Closes #2059.

389 390 391 392 393 394
Build:
- Fix man page building to not absolutely require xsltproc when using CMake.
  This now handles the case where we are building from the released tar, or
  building from git if xsltproc is available, or building from git if xsltproc
  is not available.

395

396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429
1.6.13 - 2021-02-04
===================

Broker:
- Fix crash on Windows if loading a plugin fails. Closes #1866.
- Fix DH group not being set for TLS connections, which meant ciphers using
  DHE couldn't be used. Closes #1925. Closes #1476.
- Fix local bridges being disconnected on SIGHUP. Closes #1942.
- Fix $SYS/broker/publish/messages/+ counters not being updated for QoS 1, 2
  messages. Closes #1968.
- Fix listener not being reassociated with client when reloading a persistence
  file and `per_listener_settings true` is set and the client did not set a
  username. Closes #1891.
- Fix file logging on Windows. Closes #1880.
- Fix bridge sock not being removed from sock hash on error. Closes #1897.

Client library:
- Fix build on Mac Big Sur. Closes #1905.
- Fix DH group not being set for TLS connections, which meant ciphers using
  DHE couldn't be used. Closes #1925. Closes #1476.

Clients:
- mosquitto_sub will now quit with an error if the %U option is used on
  Windows, rather than just quitting. Closes #1908.
- Fix config files truncating options after the first space. Closes #2059.

Apps:
- Perform stricter parsing of input username in mosquitto_passwd. Closes
  #570126 (Eclipse bugzilla).

Build:
- Enable epoll support in CMake builds.


R
Roger A. Light 已提交
430
2.0.6 - 2021-01-28
431 432 433 434 435
==================

Broker:
- Fix calculation of remaining length parameter for websockets clients that
  send fragmented packets. Closes #1974.
436 437 438
Broker:
- Fix potential duplicate Will messages being sent when a will delay interval
  has been set.
439 440
- Fix message expiry interval property not being honoured in
  `mosquitto_broker_publish` and `mosquitto_broker_publish_copy`.
441
- Fix websockets listeners with TLS not responding. Closes #2020.
442 443
- Add notes that libsystemd-dev or similar is needed if building with systemd
  support. Closes #2019.
444
- Improve logging in obscure cases when a client disconnects. Closes #2017.
445 446
- Fix reloading of listeners where multiple listeners have been defined with
  the same port but different bind addresses. Closes #2029.
447
- Fix `message_size_limit` not applying to the Will payload. Closes #2022.
448 449 450 451
- The error topic-alias-invalid was being sent if an MQTT v5 client published
  a message with empty topic and topic alias set, but the topic alias hadn't
  already been configured on the broker. This has been fixed to send a
  protocol error, as per section 3.3.4 of the specification.
452
- Note in the man pages that SIGHUP reloads TLS certificates. Closes #2037.
453
- Fix bridges not always connecting on Windows. Closes #2043.
454

455 456 457
Apps:
- Allow command line arguments to override config file options in
  mosquitto_ctrl. Closes #2010.
458 459
- mosquitto_ctrl: produce an error when requesting a new password if both
  attempts do not match. Closes #2011.
460

R
Roger A. Light 已提交
461 462 463 464
Build:
- Fix cmake builds using `WITH_CJSON=no` not working if cJSON not found.
  Closes #2026.

465 466 467
Other:
- The SPDX identifiers for EDL-1.0 have been changed to BSD-3-Clause as per
  The Eclipse legal documentation generator. The licenses are identical.
468 469


470 471 472
2.0.5 - 2021-01-11
==================

473 474 475
Broker:
- Fix `auth_method` not being provided to the extended auth plugin event.
  Closes #1975.
476 477 478 479
- Fix large packets not being completely published to slow clients.
  Closes #1977.
- Fix bridge connection not relinquishing POLLOUT after messages are sent.
  Closes #1979.
480 481
- Fix apparmor incorrectly denying access to
  /var/lib/mosquitto/mosquitto.db.new. Closes #1978.
482
- Fix potential intermittent initial bridge connections when using poll().
R
Roger Light 已提交
483
- Fix `bind_interface` option. Closes #1999.
484 485 486
- Fix invalid behaviour in dynsec plugin if a group or client is deleted
  before a role that was attached to the group or client is deleted.
  Closes #1998.
487
- Improve logging in dynsec addGroupRole command. Closes #2005.
488
- Improve logging in dynsec addGroupClient command. Closes #2008.
489

490 491 492 493
Client library:
- Improve documentation around the `_v5()` and non-v5 functions, e.g.
  `mosquitto_publish()` and `mosquitto_publish_v5().

494 495 496
Build:
- `install` Makefile target should depend on `all`, not `mosquitto`, to ensure
  that man pages are always built. Closes #1989.
R
Roger A. Light 已提交
497
- Fixes for lots of minor build warnings highlighted by Visual Studio.
498

499 500
Apps:
- Disallow control characters in mosquitto_passwd usernames.
501
- Fix incorrect description in mosquitto_ctrl man page. Closes #1995.
502
- Fix `mosquitto_ctrl dynsec getGroup` not showing roles. Closes #1997.
503

504

505 506 507
2.0.4 - 2020-12-22
==================

508 509 510
Broker:
- Fix $SYS/broker/publish/messages/+ counters not being updated for QoS 1, 2
  messages. Closes #1968.
511 512
- mosquitto_connect_bind_async() and mosquitto_connect_bind_v5() should not
  reset the bind address option if called with bind_address == NULL.
513 514
- Fix dynamic security configuration possibly not being reloaded on Windows
  only. Closes #1962.
515
- Add more log messages for dynsec load/save error conditions.
516 517
- Fix websockets connections blocking non-websockets connections on Windows.
  Closes #1934.
518

519 520 521
Build:
- Fix man pages not being built when using CMake. Closes #1969.

522

523 524 525 526 527 528 529 530
2.0.3 - 2020-12-17
==================

Security:
- Running mosquitto_passwd with the following arguments only
  `mosquitto_passwd -b password_file username password` would cause the
  username to be used as the password.

531 532 533
Broker:
- Fix excessive CPU use on non-Linux systems when the open file limit is set
  high. Closes #1947.
534 535
- Fix LWT not being sent on client takeover when the existing session wasn't
  being continued. Closes #1946.
536 537
- Fix bridges possibly not completing connections when WITH_ADNS is in use.
  Closes #1960.
538 539
- Fix QoS 0 messages not being delivered if max_queued_messages was set to 0.
  Closes #1956.
540
- Fix local bridges being disconnected on SIGHUP. Closes #1942.
541
- Fix slow initial bridge connections for WITH_ADNS=no.
542
- Fix persistence_location not appending a '/'.
543

544 545 546 547
Clients:
- Fix mosquitto_sub being unable to terminate with Ctrl-C if a successful
  connection is not made. Closes #1957.

548 549 550 551
Apps:
- Fix `mosquitto_passwd -b` using username as password (not if `-c` is also
  used). Closes #1949.

552 553
Build:
- Fix `install` target when using WITH_CJSON=no. Closes #1938.
R
Roger Light 已提交
554
- Fix `generic` docker build. Closes #1945.
555 556


557 558 559 560 561 562 563
2.0.2 - 2020-12-10
==================

Broker:
- Fix build regression for WITH_WEBSOCKETS=yes on non-Linux systems.


R
Roger A. Light 已提交
564
2.0.1 - 2020-12-10
R
Roger A. Light 已提交
565 566
==================

567 568 569
Broker:
- Fix websockets connections on Windows blocking subsequent connections.
  Closes #1934.
570 571
- Fix DH group not being set for TLS connections, which meant ciphers using
  DHE couldn't be used. Closes #1925. Closes #1476.
572 573
- Fix websockets listeners not causing the main loop not to wake up.
  Closes #1936.
574 575

Client library:
576 577
- Fix DH group not being set for TLS connections, which meant ciphers using
  DHE couldn't be used. Closes #1925. Closes #1476.
578

R
Roger A. Light 已提交
579 580 581
Apps:
- Fix `mosquitto_passwd -U`

582
Build:
R
Roger A. Light 已提交
583
- Fix cjson include paths.
584
- Fix build using WITH_TLS=no when the openssl headers aren't available.
585
- Distribute cmake/ and snap/ directories in tar.
R
Roger A. Light 已提交
586 587


588 589 590
2.0.0 - 2020-12-03
==================

591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608
Breaking changes:
- When the Mosquitto broker is run without configuring any listeners it will
  now bind to the loopback interfaces 127.0.0.1 and/or ::1. This means that
  only connections from the local host will be possible.

  Running the broker as `mosquitto` or `mosquitto -p 1883` will bind to the
  loopback interface.

  Running the broker with a configuration file with no listeners configured
  will bind to the loopback interface with port 1883.

  Running the broker with a listener defined will bind by default to `0.0.0.0`
  / `::` and so will be accessible from any interface. It is still possible to
  bind to a specific address/interface.

  If the broker is run as `mosquitto -c mosquitto.conf -p 1884`, and a
  listener is defined in the configuration file, then the port defined on the
  command line will be IGNORED, and no listener configured for it.
609 610 611 612 613 614
- All listeners now default to `allow_anonymous false` unless explicitly set
  to true in the configuration file. This means that when configuring a
  listener the user must either configure an authentication and access control
  method, or set `allow_anonymous true`. When the broker is run without a
  configured listener, and so binds to the loopback interface, anonymous
  connections are allowed.
615 616 617 618 619 620 621 622 623 624 625 626 627 628
- If Mosquitto is run on as root on a unix like system, it will attempt to
  drop privileges as soon as the configuration file has been read. This is in
  contrast to the previous behaviour where elevated privileges were only
  dropped after listeners had been started (and hence TLS certificates loaded)
  and logging had been started. The change means that clients will never be
  able to connect to the broker when it is running as root, unless the user
  explicitly sets it to run as root, which is not advised. It also means that
  all locations that the broker needs to access must be available to the
  unprivileged user. In particular those people using TLS certificates from
  Lets Encrypt will need to do something to allow Mosquitto to access
  those certificates. An example deploy renewal hook script to help with this
  is at `misc/letsencrypt/mosquitto-copy.sh`.
  The user that Mosquitto will change to are the one provided in the
  configuration, `mosquitto`, or `nobody`, in order of availability.
629 630
- The `pid_file` option will now always attempt to write a pid file,
  regardless of whether the `-d` argument is used when running the broker.
631 632
- The `tls_version` option now defines the *minimum* TLS protocol version to
  be used, rather than the exact version. Closes #1258.
R
Roger A. Light 已提交
633 634
- The `max_queued_messages` option has been increased from 100 to 1000 by
  default, and now also applies to QoS 0 messages, when a client is connected.
635 636 637
- The mosquitto_sub, mosquitto_pub, and mosquitto_rr clients will now load
  OS provided CA certificates by default if `-L mqtts://...` is used, or if
  the port is set to 8883 and no other CA certificates are loaded.
638
- Minimum support libwebsockets version is now 2.4.0
R
Roger A. Light 已提交
639
- The license has changed from "EPL-1.0 OR EDL-1.0" to "EPL-2.0 OR EDL-1.0".
640

641 642 643 644 645 646
Broker features:
- New plugin interface which is more flexible, easier to develop for and
  easier to extend.
- New dynamic security plugin, which allows clients, groups, and roles to be
  defined and updated as the broker is running.
- Performance improvements, particularly for higher numbers of clients.
647 648 649
- When running as root, if dropping privileges to the "mosquitto" user fails,
  then try "nobody" instead. This reduces the burden on users installing
  Mosquitto themselves.
650
- Add support for Unix domain socket listeners.
651 652 653
- Add `bridge_outgoing_retain` option, to allow outgoing messages from a
  bridge to have the retain bit completely disabled, which is useful when
  bridging to e.g. Amazon or Google.
654 655
- Add support for MQTT v5 bridges to handle the "retain-available" property
  being false.
656 657
- Allow MQTT v5.0 outgoing bridges to fall back to MQTT v3.1.1 if connecting
  to a v3.x only broker.
658 659
- DLT logging is now configurable at runtime with `log_dest dlt`.
  Closes #1735.
660 661
- Add `mosquitto_broker_publish()` and `mosquitto_broker_publish_copy()`
  functions, which can be used by plugins to publish messages.
662 663
- Add `mosquitto_client_protocol_version()` function which can be used by
  plugins to determine which version of MQTT a client has connected with.
664 665
- Add `mosquitto_kick_client_by_clientid()` and `mosquitto_kick_client_by_username()`
  functions, which can be used by plugins to disconnect clients.
666
- Add support for handling $CONTROL/ topics in plugins.
667
- Add support for PBKDF2-SHA512 password hashing.
668 669
- Enabling certificate based TLS encryption is now through certfile and
  keyfile, not capath or cafile.
670
- Added support for controlling UNSUBSCRIBE calls in v5 plugin ACL checks.
R
Roger A. Light 已提交
671
- Add "deny" acl type. Closes #1611.
672
- The broker now sends the receive-maximum property for MQTT v5 CONNACKs.
673
- Add the `bridge_max_packet_size` option. Closes #265.
674
- Add the `bridge_bind_address` option. Closes #1311.
675
- TLS certificates for the server are now reloaded on SIGHUP.
676 677 678 679 680 681 682 683 684 685 686 687
- Default for max_queued_messages has been changed to 1000.
- Add `ciphers_tls1.3` option, to allow setting TLS v1.3 ciphersuites.
  Closes #1825.
- Bridges now obey MQTT v5 server-keepalive.
- Add bridge support for the MQTT v5 maximum-qos property.
- Log client port on new connections. Closes #1911.

Broker fixes:
- Send DISCONNECT with `malformed-packet` reason code on invalid PUBLISH,
  SUBSCRIBE, and UNSUBSCRIBE packets.
- Document that X509_free() must be called after using
  mosquitto_client_certificate(). Closes #1842.
688 689 690
- Fix listener not being reassociated with client when reloading a persistence
  file and `per_listener_settings true` is set and the client did not set a
  username. Closes #1891.
691
- Fix bridge sock not being removed from sock hash on error. Closes #1897.
692 693 694 695
- mosquitto_password now forbids the : character. Closes #1833.
- Fix `log_timestamp_format` not applying to `log_dest topic`. Closes #1862.
- Fix crash on Windows if loading a plugin fails. Closes #1866.
- Fix file logging on Windows. Closes #1880.
696
- Report an error if the config file is set to a directory. Closes #1814.
697 698
- Fix bridges incorrectly setting Wills to manage remote notifications when
  `notifications_local_only` was set true. Closes #1902.
699

700
Client library features:
701 702 703
- Client no longer generates random client ids for v3.1.1 clients, these are
  now expected to be generated on the broker. This matches the behaviour for
  v5 clients. Closes #291.
704
- Add support for connecting to brokers through Unix domain sockets.
R
Roger Light 已提交
705 706 707 708 709 710
- Add `mosquitto_property_identifier()`, for retrieving the identifier integer
  for a property.
- Add `mosquitto_property_identifier_to_string()` for converting a property
  identifier integer to the corresponding property name string.
- Add `mosquitto_property_next()` to retrieve the next property in a list, for
  iterating over property lists.
711 712
- mosquitto_pub now handles the MQTT v5 retain-available property by never
  setting the retain bit.
713 714
- Added MOSQ_OPT_TCP_NODELAY, to allow disabling Nagle's algorithm on client
  sockets. Closes #1526.
R
Roger A. Light 已提交
715 716
- Add `mosquitto_ssl_get()` to allow clients to access their SSL structure and
  perform additional verification.
717 718 719 720 721 722
- Add MOSQ_OPT_BIND_ADDRESS to allow setting of a bind address independently
  of the `mosquitto_connect*()` call.
- Add `MOSQ_OPT_TLS_USE_OS_CERTS` option, to instruct the client to load and
  trust OS provided CA certificates for use with TLS connections.

Client library fixes:
723
- Fix send quota being incorrecly reset on reconnect. Closes #1822.
724
- Don't use logging until log mutex is initialised. Closes #1819.
725
- Fix missing mach/mach_time.h header on OS X. Closes #1831.
726 727
- Fix connect properties not being sent when the client automatically
  reconnects. Closes #1846.
728

729
Client features:
730 731
- Add timeout return code (27) for `mosquitto_sub -W <secs>` and
  `mosquitto_rr -W <secs>`. Closes #275.
732 733
- Add support for connecting to brokers through Unix domain sockets with the
  `--unix` argument.
734
- Use cJSON library for producing JSON output, where available. Closes #1222.
735
- Add support for outputting MQTT v5 property information to mosquitto_sub/rr
R
Roger A. Light 已提交
736
  JSON output. Closes #1416.
737 738
- Add `--pretty` option to mosquitto_sub/rr for formatted/unformatted JSON
  output.
739
- Add support for v5 property printing to mosquitto_sub/rr in non-JSON mode.
R
Roger A. Light 已提交
740
  Closes #1416.
741 742
- Add `--nodelay` to all clients to allow them to use the MOSQ_OPT_TCP_NODELAY
  option.
743 744
- Add `-x` to all clients to all the session-expiry-interval property to be
  easily set for MQTT v5 clients.
745 746
- Add `--random-filter` to mosquitto_sub, to allow only a certain proportion
  of received messages to be printed.
747
- mosquitto_sub %j and %J timestamps are now in a ISO 8601 compatible format.
748 749
- mosquitto_sub now supports extra format specifiers for field width and
  precision for some parameters.
R
Roger A. Light 已提交
750
- Add `--version` for all clients.
751 752 753 754
- All clients now load OS provided CA certificates if used with `-L
  mqtts://...`, or if port is set to 8883 and no other CA certificates are
  used. Closes #1824.
- Add the `--tls-use-os-certs` option to all clients.
755

756 757 758 759 760 761 762
Client fixes:
- mosquitto_sub will now exit if all subscriptions were denied.
- mosquitto_pub now sends 0 length files without an error when using `-f`.
- Fix description of `-e` and `-t` arguments in mosquitto_rr. Closes #1881.
- mosquitto_sub will now quit with an error if the %U option is used on
  Windows, rather than just quitting. Closes #1908.

763

764 765 766 767 768 769 770 771 772 773 774 775 776
1.6.12 - 2020-08-19
===================

Security:
- In some circumstances, Mosquitto could leak memory when handling PUBLISH
  messages. This is limited to incoming QoS 2 messages, and is related
  to the combination of the broker having persistence enabled, a clean
  session=false client, which was connected prior to the broker restarting,
  then has reconnected and has now sent messages at a sufficiently high rate
  that the incoming queue at the broker has filled up and hence messages are
  being dropped. This is more likely to have an effect where
  max_queued_messages is a small value. This has now been fixed. Closes #1793.

R
Roger A. Light 已提交
777 778 779
Broker:
- Build warning fixes when building with WITH_BRIDGE=no and WITH_TLS=no.

780 781
Clients:
- All clients exit with an error exit code on CONNACK failure. Closes #1778.
782
- Don't busy loop with `mosquitto_pub -l` on a slow connection.
R
Roger A. Light 已提交
783 784 785 786 787 788 789 790 791 792 793 794 795 796


1.5.10 - 2020-08-19
===================

Security:
- In some circumstances, Mosquitto could leak memory when handling PUBLISH
  messages. This is limited to incoming QoS 2 messages, and is related
  to the combination of the broker having persistence enabled, a clean
  session=false client, which was connected prior to the broker restarting,
  then has reconnected and has now sent messages at a sufficiently high rate
  that the incoming queue at the broker has filled up and hence messages are
  being dropped. This is more likely to have an effect where
  max_queued_messages is a small value. This has now been fixed. Closes #1793.
797 798


R
Roger A. Light 已提交
799 800 801
1.6.11 - 2020-08-11
===================

802 803 804 805
Security:
- On Windows the Mosquitto service was being installed without appropriate
  path quoting, this has been fixed.

806 807
Broker:
- Fix usage message only mentioning v3.1.1. Closes #1713.
808 809
- Fix broker refusing to start if only websockets listeners were defined.
  Closes #1740.
810 811 812 813
- Change systemd unit files to create /var/log/mosquitto before starting.
  Closes #821.
- Don't quit with an error if opening the log file isn't possible.
  Closes #821.
814
- Fix bridge topic remapping when using "" as the topic. Closes #1749.
815 816
- Fix messages being queued for disconnected bridges when clean start was
  set to true. Closes #1729.
817 818
- Fix `autosave_interval` not being triggered by messages being delivered.
  Closes #1726.
819 820
- Fix websockets clients sometimes not being disconnected promptly.
  Closes #1718.
821 822
- Fix "slow" file based logging by switching to line based buffering.
  Closes #1689. Closes #1741.
823 824
- Log protocol error message where appropriate from a bad UNSUBSCRIBE, rather
  than the generic "socket error".
825 826
- Don't try to start DLT logging if DLT unavailable, to avoid a long delay
  when shutting down the broker. Closes #1735.
R
Roger A. Light 已提交
827
- Fix potential memory leaks. Closes #1773. Closes #1774.
828 829
- Fix clients not receiving messages after a previous client with the same
  client ID and positive will delay interval quit. Closes #1752.
830
- Fix overly broad HAVE_PTHREAD_CANCEL compile guard. Closes #1547.
831

832 833
Client library:
- Improved documentation around connect callback return codes. Close #1730.
834 835
- Fix `mosquitto_publish*()` no longer returning `MOSQ_ERR_NO_CONN` when not
  connected. Closes #1725.
836 837
- `mosquitto_loop_start()` now sets a thread name on Linux, FreeBSD, NetBSD,
  and OpenBSD. Closes #1777.
838
- Fix `mosquitto_loop_stop()` not stopping on Windows. Closes #1748. Closes #117.
839

840

R
Roger A. Light 已提交
841 842 843
1.6.10 - 2020-05-25
===================

844 845 846
Broker:
- Report invalid bridge prefix+pattern combinations at config parsing time
  rather than letting the bridge fail later. Issue #1635.
847 848 849
- Fix `mosquitto_passwd -b` not updating passwords for existing users
  correctly. Creating a new user with `-b` worked without problem.
  Closes #1664.
850
- Fix memory leak when connecting clients rejected.
851 852
- Don't disconnect clients that are already disconnected. This prevents the
  session expiry being extended on SIGHUP. Closes #1521.
R
Roger A. Light 已提交
853
- Fix support for openssl 3.0.
854 855
- Fix check when loading persistence file of a different version than the
  native version. Closes #1684.
856 857
- Fix possible assert crash associated with bridge reconnecting when compiled
  without epoll support. Closes #1700.
R
Roger A. Light 已提交
858

859
Client library:
860 861
- Don't treat an unexpected PUBACK, PUBREL, or PUBCOMP as a fatal error.
  Issue #1629.
R
Roger A. Light 已提交
862
- Fix support for openssl 3.0.
R
Roger A. Light 已提交
863 864 865 866
- 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.
867

868 869 870
Clients:
- Fix mosquitto_sub %j or %J not working on Windows. Closes #1674.

871 872
Build:
- Various fixes for building with <C99 support. Closes #1622.
R
Roger A. Light 已提交
873
- Fix use of sed on BSD. Closes #1614.
874 875


876 877 878
1.6.9 - 20200227
================

879 880
Broker:
- Fix session expiry with very large expiry intervals. Closes #1525.
881
- Check ACL patterns for validity when loading. Closes #1539.
882 883 884
- 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.
885
- Strip whitespace from end of config file string options. Closes #1566.
886 887
- Satisfy valgrind when exiting on error due to not being able to open a
  listening socket, by calling freeaddrinfo. Closes #1565.
888
- Fix config->user not being freed on exit. Closes #1564.
889
- Fix trailing whitespace not being trimmed on acl users. Closes #1539.
890
- Fix `bind_interface` not working for the default listener. Closes #1533.
891
- Improve password file parsing in the broker and mosqitto_passwd. Closes #1584.
892 893
- Print OpenSSL errors in more situations, like when loading certificates
  fails. Closes #1552.
894
- Fix `mosquitto_client_protocol() returning incorrect values.
895

896
Client library:
897 898
- Set minimum keepalive argument to `mosquitto_connect*()` to be 5 seconds.
  Closes #1550.
899 900
- Fix `mosquitto_topic_matches_sub()` not returning MOSQ_ERR_INVAL if the
  topic contains a wildcard. Closes #1589.
901

902 903 904
Clients:
- Fix `--remove-retained` not obeying the `-T` option for filtering out
  topics. Closes #1585.
905 906
- Default behaviour for v5 clients using `-c` is now to use infinite length
  sessions, as with v3 clients. Closes #1546.
907

908

R
Roger A. Light 已提交
909 910 911
1.6.8 - 20191128
================

912
Broker:
913 914
- Various fixes for `allow_zero_length_clientid` config, where this option was
  not being set correctly. Closes #1429.
915 916
- Fix incorrect memory tracking causing problems with memory_limit option.
  Closes #1437.
917 918
- Fix subscription topics being limited to 200 characters instead of 200
  hierarchy levels. Closes #1441.
919 920
- Only a single CRL could be loaded at once. This has been fixed.
  Closes #1442.
921 922
- Fix problems with reloading config when `per_listener_settings` was true.
  Closes #1459.
923 924
- Fix retained messages with an expiry interval not being expired after being
  restored from persistence. Closes #1464.
925 926
- Fix messages with an expiry interval being sent without an expiry interval
  property just before they were expired. Closes #1464.
927 928
- Fix TLS Websockets clients not receiving messages after taking over a
  previous connection. Closes #1489.
929 930 931
- 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.
932

933 934 935
Client library:
- Fix publish properties not being passed to on_message_v5 callback for QoS 2
  messages. Closes #1432.
936
- Fix documentation issues in mosquitto.h. Closes #1478.
937
- Document `mosquitto_connect_srv()`. Closes #1499.
938

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

949 950 951 952 953
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.

954 955
Installer:
- Fix mosquitto_rr.exe not being included in Windows installers. Closes #1463.
956

R
Roger A. Light 已提交
957

958
1.6.7 - 20190925
959 960 961 962
================

Broker:
- Add workaround for working with libwebsockets 3.2.0.
963
- Fix potential crash when reloading config. Closes #1424, #1425.
964

965 966
Client library:
- Don't use `/` in autogenerated client ids, to avoid confusing with topics.
967 968
- Fix `mosquitto_max_inflight_messages_set()` and `mosquitto_int_option(...,
  MOSQ_OPT_*_MAX, ...)` behaviour. Closes #1417.
969 970
- Fix regression on use of `mosquitto_connect_async()` not working.
  Closes #1415 and #1422.
971

972 973 974
Clients:
- mosquitto_sub: Fix `-E` incorrectly not working unless `-d` was also
  specified. Closes #1418.
975 976
- Updated documentation around automatic client ids.

977

978
1.6.6 - 20190917
979 980
================

981 982 983 984
Security:
- Restrict topic hierarchy to 200 levels to prevent possible stack overflow.
  Closes #1412.

985 986 987
Broker:
- Restrict topic hierarchy to 200 levels to prevent possible stack overflow.
  Closes #1412.
988 989
- mosquitto_passwd now returns 1 when attempting to update a user that does
  not exist. Closes #1414.
990 991


992 993 994
1.6.5 - 20190912
================

995 996 997
Broker:
- Fix v5 DISCONNECT packets with remaining length == 2 being treated as a
  protocol error. Closes #1367.
998
- Fix support for libwebsockets 3.x.
999
- Fix slow websockets performance when sending large messages. Closes #1390.
1000
- Fix bridges potentially not connecting on Windows. Closes #478.
1001 1002
- Fix clients authorised using `use_identity_as_username` or
  `use_subject_as_username` being disconnected on SIGHUP. Closes #1402.
1003 1004
- Improve error messages in some situations when clients disconnect. Reduces
  the number of "Socket error on client X, disconnecting" messages.
1005 1006
- Fix Will for v5 clients not being sent if will delay interval was greater
  than the session expiry interval. Closes #1401.
1007
- Fix CRL file not being reloaded on HUP. Closes #35.
1008 1009
- Fix repeated "Error in poll" messages on Windows when only websockets
  listeners are defined. Closes #1391.
1010

1011 1012 1013
Client library:
- Fix reconnect backoff for the situation where connections are dropped rather
  than refused. Closes #737.
1014
- Fix missing locks on `mosq->state`. Closes #1374.
1015

1016 1017 1018
Documentation:
- Improve details on global/per listener options in the mosquitto.conf man page.
  Closes #274.
1019 1020 1021
- Clarify behaviour when clients exceed the `message_size_limit`. Closes #448.
- Improve documentation for `max_inflight_bytes`, `max_inflight_messages`,
  and `max_queued_messages`.
1022

1023 1024
Build:
- Fix missing function warnings on NetBSD.
1025
- Fix WITH_STATIC_LIBRARIES using CMake on Windows. Closes #1369.
1026
- Guard ssize_t definition on Windows. Closes #522.
1027 1028


1029
1.6.4 - 20190801
1030 1031 1032 1033 1034
================

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

1042 1043 1044
Client library:
- Fix MQTT v5 subscription options being incorrectly set for MQTT v3
  subscriptions. Closes #1353.
1045 1046 1047
- Make behaviour of `mosquitto_connect_async()` consistent with
  `mosquitto_connect()` when connecting to a non-existent server.
  Closes #1345.
1048 1049 1050
- `mosquitto_string_option(mosq, MOSQ_OPT_TLS_KEYFORM, ...)` was incorrectly
  returning `MOSQ_ERR_INVAL` with valid input. This has been fixed.
  Closes #1360.
1051 1052 1053
- 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.
1054
- Fix memory leak when setting v5 properties in mosquitto_connect_v5().
1055
- Fix properties not being sent on QoS>0 PUBLISH messages.
1056

1057 1058 1059
Clients:
- mosquitto_pub: fix error codes not being returned when mosquitto_pub exits.
  Closes #1354.
1060 1061
- All clients: improve error messages when connecting to a v3.x broker when in
  v5 mode. Closes #1344.
1062

R
Roger A. Light 已提交
1063 1064 1065
Other:
- Various documentation fixes.

1066

R
Roger A. Light 已提交
1067
1.6.3 - 20190618
1068 1069 1070 1071
================

Broker:
- Fix detection of incoming v3.1/v3.1.1 bridges. Closes #1263.
1072 1073
- Fix default max_topic_alias listener config not being copied to the in-use
  listener when compiled without TLS support.
R
Roger A. Light 已提交
1074
- Fix random number generation if compiling using `WITH_TLS=no` and on Linux
1075 1076 1077
  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.
R
Roger A. Light 已提交
1078 1079 1080 1081 1082
- 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.
1083 1084
- Improve documentation around the upgrading of persistence files. Closes
  #1276.
1085 1086
- Add 'extern "C"' on mosquitto_broker.h and mosquitto_plugin.h for C++ plugin
  writing. Closes #1290.
1087 1088
- Fix persistent Websockets clients not receiving messages after they
  reconnect, having sent DISCONNECT on a previous session. Closes #1227.
R
Roger A. Light 已提交
1089 1090
- Disable TLS renegotiation. Client initiated renegotiation is considered to
  be a potential attack vector against servers. Closes #1257.
1091
- Fix incorrect shared subscription topic '$shared'.
1092 1093
- Fix zero length client ids being rejected for MQTT v5 clients with clean
  start set to true.
1094 1095 1096
- 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.
1097
- Fix incoming/outgoing quota problems for QoS>0.
1098
- Remove obsolete `store_clean_interval` from documentation.
R
Roger A. Light 已提交
1099
- Fix v4 authentication plugin never calling psk_key_get.
1100

1101 1102 1103 1104
Client library:
- Fix typo causing build error on Windows when building without TLS support.
  Closes #1264.

1105 1106
Clients:
- Fix -L url parsing when `/topic` part is missing.
1107 1108
- Stop some error messages being printed even when `--quiet` was used.
  Closes #1284.
1109 1110
- Fix mosquitto_pub exiting with error code 0 when an error occurred.
  Closes #1285.
R
Roger A. Light 已提交
1111
- Fix mosquitto_pub not using the `-c` option. Closes #1273.
1112 1113
- Fix MQTT v5 clients not being able to specify a password without a username.
  Closes #1274.
1114
- Fix `mosquitto_pub -l` not handling network failures. Closes #1152.
1115
- Fix `mosquitto_pub -l` not handling zero length input. Closes #1302.
1116 1117
- Fix double free on exit in mosquitto_pub. Closes #1280.

R
Roger A. Light 已提交
1118 1119 1120 1121
Documentation:
- Remove references to Python binding and C++ wrapper in libmosquitto man
  page. Closes #1266.

1122 1123
Build:
- CLIENT_LDFLAGS now uses LDFLAGS. Closes #1294.
1124

1125

1126
1.6.2 - 20190430
R
Roger A. Light 已提交
1127 1128 1129
================

Broker:
1130 1131 1132 1133
- Fix memory access after free, leading to possible crash, when v5 client with
  Will message disconnects, where the Will message has as its first property
  one of `content-type`, `correlation-data`, `payload-format-indicator`, or
  `response-topic`.  Closes #1244.
R
Roger A. Light 已提交
1134
- Fix build for WITH_TLS=no. Closes #1250.
1135
- Fix Will message not allowing user-property properties.
1136 1137
- Fix broker originated messages (e.g. $SYS/broker/version) not being
  published when `check_retain_source` set to true. Closes #1245.
1138 1139
- Fix $SYS/broker/version being incorrectly expired after 60 seconds.
  Closes #1245.
R
Roger A. Light 已提交
1140

R
Roger A. Light 已提交
1141
Library:
1142 1143 1144 1145
- Fix crash after client has been unable to connect to a broker. This occurs
  when the client is exiting and is part of the final library cleanup routine.
  Closes #1246.

R
Roger A. Light 已提交
1146 1147 1148
Clients:
- Fix -L url parsing. Closes #1248.

R
Roger A. Light 已提交
1149

1150
1.6.1 - 20190426
1151 1152
================

R
Roger A. Light 已提交
1153 1154 1155
Broker:
- Document `memory_limit` option.

1156
Clients:
R
Roger A. Light 已提交
1157
- Fix compilation on non glibc systems due to missing sys/time.h header.
1158

1159 1160
Build:
- Add `make check` target and document testing procedure. Closes #1230.
1161
- Document bundled dependencies and how to disable. Closes #1231.
1162 1163
- Split CFLAGS and CPPFLAGS, and LDFLAGS and LDADD/LIBADD.
- test/unit now respects CPPFLAGS and LDFLAGS. Closes #1232.
1164
- Don't call ldconfig in CMake scripts. Closes #1048.
1165
- Use CMAKE_INSTALL_* variables when installing in CMake. Closes #1049.
1166

1167

1168
1.6 - 20190417
1169 1170
==============

1171
Broker features:
1172 1173 1174 1175 1176 1177
- Add support for MQTT v5
- Add support for OCSP stapling.
- Add support for ALPN on bridge TLS connections. Closes #924.
- Add support for Automotive DLT logging.
- Add TLS Engine support.
- Persistence file read/write performance improvements.
1178
- General performance improvements.
1179 1180
- Add max_keepalive option, to allow a maximum keepalive value to be set for
  MQTT v5 clients only.
1181 1182 1183
- Add `bind_interface` option which allows a listener to be bound to a
  specific network interface, in a similar fashion to the `bind_address` option.
  Linux only.
1184
- Add improved bridge restart interval based on Decorrelated Jitter.
1185 1186
- Add `dhparamfile` option, to allow DH parameters to be loaded for Ephemeral
  DH support
1187
- Disallow writing to $ topics where appropriate.
1188
- Fix mosquitto_passwd crashing on corrupt password file. Closes #1207.
1189 1190 1191 1192 1193 1194
- Add explicit support for TLS v1.3.
- Drop support for TLS v1.0.
- Improved general support for broker generated client ids. Removed libuuid
  dependency.
- auto_id_prefix now defaults to 'auto-'.
- QoS 1 and 2 flow control improvements.
1195

R
Roger A. Light 已提交
1196
Client library features:
1197
- Add support for MQTT v5
1198 1199
- Add mosquitto_subscribe_multiple() for sending subscriptions to multiple
  topics in one command.
1200
- Add TLS Engine support.
1201 1202
- Add explicit support for TLS v1.3.
- Drop support for TLS v1.0.
1203
- QoS 1 and 2 flow control improvements.
1204

R
Roger A. Light 已提交
1205
Client features:
1206
- Add support for MQTT v5
1207 1208
- Add mosquitto_rr client, which can be used for "request-response" messaging,
  by sending a request message and awaiting a response.
1209 1210 1211
- Add TLS Engine support.
- Add support for ALPN on TLS connections. Closes #924.
- Add -D option for all clients to specify MQTT v5 properties.
R
Roger A. Light 已提交
1212 1213 1214
- Add -E to mosquitto_sub, which causes it to exit immediately after having
  its subscriptions acknowledged. Use with -c to create a durable client
  session without requiring a message to be received.
1215 1216
- Add --remove-retained to mosquitto_sub, which can be used to clear retained
  messages on a broker.
1217 1218
- Add --repeat and --repeat-delay to mosquitto_pub, which can be used to
  repeat single message publishes at a regular interval.
1219
- -V now accepts `5, `311`, `31`, as well as `mqttv5` etc.
1220 1221
- Add explicit support for TLS v1.3.
- Drop support for TLS v1.0.
R
Roger A. Light 已提交
1222

1223
Broker fixes:
R
Roger A. Light 已提交
1224
- Improve error reporting when creating listeners.
1225 1226
- Fix build on SmartOS due to missing IPV6_V6ONLY. Closes #1212.

1227
Client library fixes
R
Roger A. Light 已提交
1228 1229
- Add missing `mosquitto_userdata()` function.

1230 1231 1232
Client fixes:
- mosquitto_pub wouldn't always publish all messages when using `-l` and
  QoS>0. This has been fixed.
1233 1234
- mosquitto_sub was incorrectly encoding special characters when using %j
  output format. Closes #1220.
1235

1236

1237
1.5.8 - 20190228
1238 1239 1240 1241 1242 1243
================

Broker:
- Fix clients being disconnected when ACLs are in use. This only affects the
  case where a client connects using a username, and the anonymous ACL list is
  defined but specific user ACLs are not defined. Closes #1162.
1244
- Make error messages for missing config file clearer.
R
Roger A. Light 已提交
1245 1246
- Fix some Coverity Scan reported errors that could occur when the broker was
  already failing to start.
1247
- Fix broken mosquitto_passwd on FreeBSD. Closes #1032.
1248 1249
- Fix delayed bridge local subscriptions causing missing messages.
  Closes #1174.
1250

1251 1252 1253
Library:
- Use higher resolution timer for random initialisation of client id
  generation. Closes #1177.
R
Roger A. Light 已提交
1254 1255
- Fix some Coverity Scan reported errors that could occur when the library was
  already quitting.
1256

1257

1258
1.5.7 - 20190213
1259 1260 1261 1262
================

Broker:
- Fix build failure when using WITH_ADNS=yes
1263 1264
- Ensure that an error occurs if `per_listener_settings true` is given after
  other security options. Closes #1149.
1265 1266
- Fix include_dir not sorting config files before loading. This was partially
  fixed in 1.5 previously.
1267
- Improve documentation around the `include_dir` option. Closes #1154.
1268 1269
- Fix case where old unreferenced msg_store messages were being saved to the
  persistence file, bloating its size unnecessarily. Closes #389.
1270

1271 1272 1273 1274 1275
Library:
- Fix `mosquitto_topic_matches_sub()` not returning MOSQ_ERR_INVAL for
  invalid subscriptions like `topic/#abc`. This only affects the return value,
  not the match/no match result, which was already correct.

R
Roger A. Light 已提交
1276 1277
Build:
- Don't require C99 compiler.
1278
- Add rewritten build test script and remove some build warnings.
R
Roger A. Light 已提交
1279

1280

1281
1.5.6 - 20190206
1282 1283
================

1284
Security:
1285
- CVE-2018-12551: If Mosquitto is configured to use a password file for
1286 1287 1288 1289 1290 1291 1292 1293
  authentication, any malformed data in the password file will be treated as
  valid. This typically means that the malformed data becomes a username and no
  password. If this occurs, clients can circumvent authentication and get access
  to the broker by using the malformed username. In particular, a blank line
  will be treated as a valid empty username. Other security measures are
  unaffected. Users who have only used the mosquitto_passwd utility to create
  and modify their password files are unaffected by this vulnerability.
  Affects version 1.0 to 1.5.5 inclusive.
1294
- CVE-2018-12550: If an ACL file is empty, or has only blank lines or
1295 1296 1297 1298 1299
  comments, then mosquitto treats the ACL file as not being defined, which
  means that no topic access is denied. Although denying access to all topics
  is not a useful configuration, this behaviour is unexpected and could lead
  to access being incorrectly granted in some circumstances. This is now
  fixed. Affects versions 1.0 to 1.5.5 inclusive.
1300
- CVE-2018-12546. If a client publishes a retained message to a topic that
R
Roger Light 已提交
1301 1302 1303 1304 1305
  they have access to, and then their access to that topic is revoked, the
  retained message will still be delivered to future subscribers. This
  behaviour may be undesirable in some applications, so a configuration option
  `check_retain_source` has been introduced to enforce checking of the
  retained message source on publish.
1306

R
Roger A. Light 已提交
1307 1308
Broker:
- Fixed comment handling for config options that have optional arguments.
1309
- Improved documentation around bridge topic remapping.
1310
- Handle mismatched handshakes (e.g. QoS1 PUBLISH with QoS2 reply) properly.
1311 1312
- Fix spaces not being allowed in the bridge remote_username option. Closes
  #1131.
1313 1314
- Allow broker to always restart on Windows when using `log_dest file`. Closes
  #1080.
1315
- Fix Will not being sent for Websockets clients. Closes #1143.
1316
- Windows: Fix possible crash when client disconnects. Closes #1137.
1317 1318
- Fixed durable clients being unable to receive messages when offline, when
  per_listener_settings was set to true. Closes #1081.
1319 1320
- Add log message for the case where a client is disconnected for sending a
  topic with invalid UTF-8. Closes #1144.
R
Roger A. Light 已提交
1321

1322 1323
Library:
- Fix TLS connections not working over SOCKS.
1324 1325
- Don't clear SSL context when TLS connection is closed, meaning if a user
  provided an external SSL_CTX they have less chance of leaking references.
1326

1327 1328
Build:
- Fix comparison of boolean values in CMake build. Closes #1101.
1329 1330
- Fix compilation when openssl deprecated APIs are not available.
  Closes #1094.
1331
- Man pages can now be built on any system. Closes #1139.
1332 1333


R
Roger A. Light 已提交
1334
1.5.5 - 20181211
1335 1336
================

1337 1338 1339 1340
Security:
- If `per_listener_settings` is set to true, then the `acl_file` setting was
  ignored for the "default listener" only. This has been fixed. This does not
  affect any listeners defined with the `listener` option. Closes #1073.
R
Roger A. Light 已提交
1341
  This is now tracked as CVE-2018-20145.
1342

R
Roger A. Light 已提交
1343 1344 1345 1346 1347
Broker:
- Add `socket_domain` option to allow listeners to disable IPv6 support.
  This is required to work around a problem in libwebsockets that means
  sockets only listen on IPv6 by default if IPv6 support is compiled in.
  Closes #1004.
1348 1349 1350
- When using ADNS, don't ask for all network protocols when connecting,
  because this can lead to confusing "Protocol not supported" errors if the
  network is down. Closes #1062.
1351 1352
- Fix outgoing retained messages not being sent by bridges on initial
  connection. Closes #1040.
1353 1354
- Don't reload auth_opt_ options on reload, to match the behaviour of the
  other plugin options. Closes #1068.
1355
- Print message on error when installing/uninstalling as a Windows service.
1356 1357
- All non-error connect/disconnect messages are controlled by the
  `connection_messages` option. Closes #772. Closes #613. Closes #537.
R
Roger A. Light 已提交
1358

1359 1360
Library:
- Fix reconnect delay backoff behaviour. Closes #1027.
1361
- Don't call on_disconnect() twice if keepalive tests fail. Closes #1067.
1362

1363 1364 1365 1366
Client:
- Always print leading zeros in mosquitto_sub when output format is hex.
  Closes #1066.

1367 1368 1369
Build:
- Fix building where TLS-PSK is not available. Closes #68.

1370

1371
1.5.4 - 20181108
1372 1373
================

1374 1375 1376 1377 1378 1379
Security:
- When using a TLS enabled websockets listener with "require_certificate"
  enabled, the mosquitto broker does not correctly verify client certificates.
  This is now fixed. All other security measures operate as expected, and in
  particular non-websockets listeners are not affected by this. Closes #996.

1380 1381 1382 1383 1384
Broker:
- Process all pending messages even when a client has disconnected. This means
  a client that send a PUBLISH then DISCONNECT quickly, then disconnects will
  have its DISCONNECT message processed properly and so no Will will be sent.
  Closes #7.
1385
- $SYS/broker/clients/disconnected should never be negative. Closes #287.
1386 1387
- Give better error message if a client sends a password without a username.
  Closes #1015.
R
Roger A. Light 已提交
1388 1389 1390
- Fix bridge not honoring restart_timeout. Closes #1019.
- Don't disconnect a client if an auth plugin denies access to SUBSCRIBE.
  Closes #1016.
1391

1392 1393
Library:
- Fix memory leak that occurred if mosquitto_reconnect() was used when TLS
1394 1395 1396
  errors were present. Closes #592.
- Fix TLS connections when using an external event loop with
  mosquitto_loop_read() and mosquitto_write(). Closes #990.
1397

1398 1399 1400
Build:
- Fix clients not being compiled with threading support when using CMake.
  Closes #983.
R
Roger A. Light 已提交
1401 1402 1403 1404
- Header fixes for FreeBSD. Closes #977.
- Use _GNU_SOURCE to fix build errors in websockets and getaddrinfo usage.
  Closes #862 and #933.
- Fix builds on QNX 7.0.0. Closes #1018.
1405

1406

1407
1.5.3 - 20180925
1408 1409
================

1410 1411 1412 1413 1414
Security:
- Fix CVE-2018-12543. If a message is sent to Mosquitto with a topic that
  begins with $, but is not $SYS, then an assert that should be unreachable is
  triggered and Mosquitto will exit.

1415 1416
Broker:
- Elevate log level to warning for situation when socket limit is hit.
1417
- Remove requirement to use `user root` in snap package config files.
1418 1419
- Fix retained messages not sent by bridges on outgoing topics at the first
  connection. Closes #701.
1420
- Documentation fixes. Closes #520, #600.
1421 1422
- Fix duplicate clients being added to by_id hash before the old client was
  removed. Closes #645.
1423 1424
- Fix Windows version not starting if include_dir did not contain any files.
  Closes #566.
1425 1426
- When an authentication plugin denied access to a SUBSCRIBE, the client would
  be disconnected incorrectly. This has been fixed. Closes #1016.
1427

1428 1429 1430
Build:
- Various fixes to ease building.

1431

R
Roger A. Light 已提交
1432
1.5.2 - 20180919
1433 1434 1435 1436
================

Broker:
- Fix build when using WITH_ADNS=yes.
1437
- Fix incorrect call to setsockopt() for TCP_NODELAY. Closes #941.
1438 1439
- Fix excessive CPU usage when the number of sockets exceeds the system limit.
  Closes #948.
1440
- Fix for bridge connections when using WITH_ADNS=yes.
1441
- Fix round_robin false behaviour. Closes #481.
1442 1443
- Fix segfault on HUP when bridges and security options are configured.
  Closes #965.
1444

1445 1446 1447 1448 1449
Library:
- Fix situation where username and password is used with SOCKS5 proxy. Closes
  #927.
- Fix SOCKS5 behaviour when passing IP addresses. Closes #927.

1450
Build:
1451
- Make it easier to build without bundled uthash.h using "WITH_BUNDLED_DEPS=no".
R
Roger A. Light 已提交
1452
- Fix build with OPENSSL_NO_ENGINE. Closes #932.
1453

1454

R
Roger A. Light 已提交
1455
1.5.1 - 20180816
1456 1457 1458 1459 1460
================

Broker:
- Fix plugin cleanup function not being called on exit of the broker.
  Closes #900.
1461
- Print more OpenSSL errors when loading certificates/keys fail.
1462
- Use AF_UNSPEC etc. instead of PF_UNSPEC to comply with POSIX. Closes #863.
R
Roger A. Light 已提交
1463 1464
- Remove use of AI_ADDRCONFIG, which means the broker can be used on systems
  where only the loopback interface is defined. Closes #869, Closes #901.
1465 1466
- Fix IPv6 addresses not being able to be used as bridge addresses.
  Closes #886.
1467 1468
- All clients now time out if they exceed their keepalive*1.5, rather than
  just reach it. This was inconsistent in two places.
1469 1470
- Fix segfault on startup if bridge CA certificates could not be read.
  Closes #851.
1471 1472
- Fix problem opening listeners on Pi caused by unsigned char being default.
  Found via #849.
1473 1474
- ACL patterns that do not contain either %c or %u now produce a warning in
  the log. Closes #209.
R
Roger A. Light 已提交
1475 1476
- Fix bridge publishing failing when per_listener_settings was true. Closes
  #860.
1477
- Fix `use_identity_as_username true` not working. Closes #833.
1478
- Fix UNSUBACK messages not being logged. Closes #903.
1479
- Fix possible endian issue when reading the `memory_limit` option.
1480
- Fix building for libwebsockets < 1.6.
1481 1482
- Fix accessor functions for username and client id when used in plugin auth
  check.
1483

1484 1485 1486 1487
Library:
- Fix some places where return codes were incorrect, including to the
  on_disconnect() callback. This has resulted in two new error codes,
  MOSQ_ERR_KEEPALIVE and MOSQ_ERR_LOOKUP.
1488 1489
- Fix connection problems when mosquitto_loop_start() was called before
  mosquitto_connect_async(). Closes #848.
1490

1491 1492 1493
Clients:
- When compiled using WITH_TLS=no, the default port was incorrectly being set
  to -1. This has been fixed.
1494
- Fix compiling on Mac OS X <10.12. Closes #813 and #240.
1495

R
Roger A. Light 已提交
1496 1497
Build:
- Fixes for building on NetBSD. Closes #258.
R
Roger A. Light 已提交
1498
- Fixes for building on FreeBSD.
1499
- Add support for compiling with static libwebsockets library.
R
Roger A. Light 已提交
1500

1501

R
Roger A. Light 已提交
1502
1.5 - 20180502
R
Roger A. Light 已提交
1503 1504
==============

1505
Security:
R
Roger A. Light 已提交
1506 1507
- Fix memory leak that could be caused by a malicious CONNECT packet.
  CVE-2017-7654. Closes #533493 (on Eclipse bugtracker)
1508

1509
Broker features:
1510 1511
- Add per_listener_settings to allow authentication and access control to be
  per listener.
R
Roger A. Light 已提交
1512 1513 1514
- Add limited support for reloading listener settings. This allows settings
  for an already defined listener to be reloaded, but port numbers must not be
  changed.
1515 1516
- Add ability to deny access to SUBSCRIBE messages as well as the current
  read/write accesses. Currently for auth plugins only.
R
Roger A. Light 已提交
1517
- Reduce calls to malloc through the use of UHPA.
1518 1519 1520 1521 1522 1523 1524 1525 1526 1527
- Outgoing messages with QoS>1 are no longer retried after a timeout period.
  Messages will be retried when a client reconnects.  This change in behaviour
  can be justified by considering when the timeout may have occurred.
  * If a connection is unreliable and has dropped, but without one end
    noticing, the messages will be retried on reconnection. Sending
    additional PUBLISH or PUBREL would not have changed anything.
  * If a client is overloaded/unable to respond/has a slow connection then
    sending additional PUBLISH or PUBREL would not help the client catch
    up. Once the backlog has cleared the client will respond. If it is not
    able to catch up, sending additional duplicates would not help either.
1528 1529 1530
- Add use_subject_as_username option for certificate based client
  authentication to use the entire certificate subject as a username, rather
  than just the CN. Closes #469467.
1531 1532
- Change sys tree printing output. This format shouldn't be relied upon and
  may change at any time. Closes #470246.
1533
- Minimum supported libwebsockets version is now 1.3.
1534 1535 1536
- Add systemd startup notification and services. Closes #471053.
- Reduce unnecessary malloc and memcpy when receiving a message and storing
  it. Closes #470258.
1537
- Support for Windows XP has been dropped.
R
Roger A. Light 已提交
1538
- Bridge connections now default to using MQTT v3.1.1.
1539
- mosquitto_db_dump tool can now output some stats on clients.
1540
- Perform utf-8 validation on incoming will, subscription and unsubscription
1541
  topics.
1542 1543
- new $SYS/broker/store/messages/count (deprecates $SYS/broker/messages/stored)
- new $SYS/broker/store/messages/bytes
1544 1545
- max_queued_bytes feature to limit queues by real size rather than
  than just message count. Closes Eclipse #452919 or Github #100
1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560
- Add support for bridges to be configured to only send notifications to the
  local broker.
- Add set_tcp_nodelay option to allow Nagle's algorithm to be disabled on
  client sockets. Closes #433.
- The behaviour of allow_anonymous has changed. In the old behaviour, the
  default if not set was to allow anonymous access. The new behaviour is to
  default is to allow anonymous access unless another security option is set.
  For example, if password_file is set and allow_anonymous is not set, then
  anonymous access will be denied. It is still possible to allow anonymous
  access by setting it explicitly.

Broker fixes:
- Fix UNSUBSCRIBE with no topic is accepted on MQTT 3.1.1. Closes #665.
- Produce an error if two bridges share the same local_clientid.
- Miscellaneous fixes on Windows.
1561
- queue_qos0_messages was not observing max_queued_** limits
1562 1563
- When using the include_dir configuration option sort the files
  alphabetically before loading them.  Closes #17.
1564
- IPv6 is no longer disabled for websockets listeners.
1565 1566
- Remove all build timestamp information including $SYS/broker/timestamp.
  Close #651.
1567
- Correctly handle incoming strings that contain a NULL byte. Closes #693.
1568
- Use constant time memcmp for password comparisons.
R
Roger A. Light 已提交
1569
- Fix incorrect PSK key being used if it had leading zeroes.
1570 1571
- Fix memory leak if a client provided a username/password for a listener with
  use_identity_as_username configured.
1572
- Fix use_identity_as_username not working on websockets clients.
1573 1574
- Don't crash if an auth plugin returns MOSQ_ERR_AUTH for a username check on
  a websockets client. Closes #490.
1575
- Fix 08-ssl-bridge.py test when using async dns lookups. Closes #507.
1576 1577
- Lines in the config file are no longer limited to 1024 characters long.
  Closes #652.
1578 1579
- Fix $SYS counters of messages and bytes sent when message is sent over
  a Websockets. Closes #250.
1580
- Fix upgrade_outgoing_qos for retained message. Closes #534.
R
Roger A. Light 已提交
1581 1582
- Fix CONNACK message not being sent for unauthorised connect on websockets.
  Closes #8.
1583
- Maximum connections on Windows increased to 2048.
1584 1585
- When a client with an in-use client-id connects, if the old client has a
  will, send the will message. Closes #26.
1586
- Fix parsing of configuration options that end with a space. Closes #804.
1587

1588
Client library features:
1589
- Outgoing messages with QoS>1 are no longer retried after a timeout period.
1590
  Messages will be retried when a client reconnects.
1591
- DNS-SRV support is now disabled by default.
1592
- Add mosquitto_subscribe_simple() This is a helper function to make
1593
  retrieving messages from a broker very straightforward. Examples of its use
1594
  are in examples/subscribe_simple.
1595 1596 1597
- Add mosquitto_subscribe_callback() This is a helper function to make
  processing messages from a broker very straightforward. An example of its use
  is in examples/subscribe_simple.
R
Roger A. Light 已提交
1598
- Connections now default to using MQTT v3.1.1.
1599 1600 1601 1602
- Add mosquitto_validate_utf8() to check whether a string is valid UTF-8
  according to the UTF-8 spec and to the additional restrictions imposed by
  the MQTT spec.
- Topic inputs are checked for UTF-8 validity.
1603 1604
- Add mosquitto_userdata function to allow retrieving the client userdata
  member variable. Closes #111.
1605 1606 1607
- Add mosquitto_pub_topic_check2(), mosquitto_sub_topic_check2(), and
  mosquitto_topic_matches_sub2() which are identical to the similarly named
  functions but also take length arguments.
1608 1609 1610
- Add mosquitto_connect_with_flags_callback_set(), which allows a second
  connect callback to be used which also exposes the connect flags parameter.
  Closes #738 and #128.
1611 1612 1613 1614 1615 1616
- Add MOSQ_OPT_SSL_CTX option to allow a user specified SSL_CTX to be used
  instead of the one generated by libmosquitto. This allows greater control
  over what options can be set. Closes #715.
- Add MOSQ_OPT_SSL_CTX_WITH_DEFAULTS to work with MOSQ_OPT_SSL_CTX and have
  the default libmosquitto SSL_CTX configuration applied to the user provided
  SSL_CTX. Closes #567.
1617 1618

Client library fixes:
R
Roger A. Light 已提交
1619
- Fix incorrect PSK key being used if it had leading zeroes.
1620 1621
- Initialise "result" variable as soon as possible in
  mosquitto_topic_matches_sub. Closes #654.
1622
- No need to close socket again if setting non-blocking failed. Closes #649.
1623 1624
- Fix mosquitto_topic_matches_sub() not correctly matching foo/bar against
  foo/+/#. Closes #670.
R
Roger A. Light 已提交
1625
- SNI host support added.
R
Roger A. Light 已提交
1626

1627
Client features:
1628
- Add -F to mosquitto_sub to allow the user to choose the output format.
1629
- Add -U to mosquitto_sub for unsubscribing from topics.
R
Roger A. Light 已提交
1630
- Add -c (clean session) to mosquitto_pub.
1631 1632
- Add --retained-only to mosquitto_sub to exit after receiving all retained
  messages.
R
Roger A. Light 已提交
1633 1634
- Add -W to allow mosquitto_sub to stop processing incoming messages after a
  timeout.
R
Roger A. Light 已提交
1635
- Connections now default to using MQTT v3.1.1.
1636
- Default to using port 8883 when using TLS.
1637 1638
- mosquitto_sub doesn't continue to keep connecting if CONNACK tells it the
  connection was refused.
1639

1640 1641 1642
Client fixes:
- Correctly handle empty files with "mosquitto_pub -l". Closes #676.

R
Roger A. Light 已提交
1643 1644 1645
Build:
- Add WITH_STRIP option (defaulting to "no") that when set to "yes" will strip
  executables and shared libraries when installing.
1646
- Add WITH_STATIC_LIBRARIES (defaulting to "no") that when set to "yes" will
1647
  build and install static versions of the client libraries.
1648
- Don't run TLS-PSK tests if TLS-PSK disabled at compile time. Closes #636.
1649 1650
- Support for openssl versions 1.0.0 and 1.0.1 has been removed as these are
  no longer supported by openssl.
1651

1652 1653 1654
Documentation:
- Replace mentions of deprecated 'c_rehash' with 'openssl rehash'.

1655 1656 1657
1.4.15 - 20180228
=================

1658
Security:
1659
- Fix CVE-2017-7652. If a SIGHUP is sent to the broker when there are no more
1660 1661
  file descriptors, then opening the configuration file will fail and security
  settings will be set back to their default values.
1662
- Fix CVE-2017-7651. Unauthenticated clients can cause excessive memory use by
1663 1664 1665 1666
  setting "remaining length" to be a large value. This is now mitigated by
  limiting the size of remaining length to valid values. A "memory_limit"
  configuration option has also been added to allow the overall memory used by
  the broker to be limited.
1667

1668 1669
Broker:
- Use constant time memcmp for password comparisons.
R
Roger A. Light 已提交
1670
- Fix incorrect PSK key being used if it had leading zeroes.
1671 1672
- Fix memory leak if a client provided a username/password for a listener with
  use_identity_as_username configured.
1673
- Fix use_identity_as_username not working on websockets clients.
1674 1675
- Don't crash if an auth plugin returns MOSQ_ERR_AUTH for a username check on
  a websockets client. Closes #490.
1676
- Fix 08-ssl-bridge.py test when using async dns lookups. Closes #507.
1677 1678
- Lines in the config file are no longer limited to 1024 characters long.
  Closes #652.
1679 1680
- Fix $SYS counters of messages and bytes sent when message is sent over
  a Websockets. Closes #250.
1681
- Fix upgrade_outgoing_qos for retained message. Closes #534.
R
Roger A. Light 已提交
1682 1683
- Fix CONNACK message not being sent for unauthorised connect on websockets.
  Closes #8.
R
Roger A. Light 已提交
1684 1685 1686

Client library:
- Fix incorrect PSK key being used if it had leading zeroes.
1687 1688
- Initialise "result" variable as soon as possible in
  mosquitto_topic_matches_sub. Closes #654.
1689
- No need to close socket again if setting non-blocking failed. Closes #649.
1690 1691
- Fix mosquitto_topic_matches_sub() not correctly matching foo/bar against
  foo/+/#. Closes #670.
R
Roger A. Light 已提交
1692

1693 1694 1695
Clients:
- Correctly handle empty files with "mosquitto_pub -l". Closes #676.

1696 1697 1698
Build:
- Don't run TLS-PSK tests if TLS-PSK disabled at compile time. Closes #636.

1699

1700 1701 1702 1703 1704 1705 1706
1.4.14 - 20170710
=================

Broker:
- Fix regression from 1.4.13 where persistence data was not being saved.


R
Roger A. Light 已提交
1707
1.4.13 - 20170627
1708 1709 1710 1711 1712 1713 1714 1715
=================

Security:
- Fix CVE-2017-9868. The persistence file was readable by all local users,
  potentially allowing sensitive information to be leaked.
  This can also be fixed administratively, by restricting access to the
  directory in which the persistence file is stored.

1716 1717
Broker:
- Fix for poor websockets performance.
1718
- Fix lazy bridges not timing out for idle_timeout. Closes #417.
1719
- Fix problems with large retained messages over websockets. Closes #427.
1720 1721
- Set persistence file to only be readable by owner, except on Windows. Closes
  #468.
1722
- Fix CONNECT check for reserved=0, as per MQTT v3.1.1 check MQTT-3.1.2-3.
1723 1724
- When the broker stop, wills for any connected clients are now "sent". Closes
  #477.
1725 1726 1727
- Auth plugins can be configured to disable the check for +# in
  usernames/client ids with the auth_plugin_deny_special_chars option.
  Partially closes #462.
1728
- Restrictions for CVE-2017-7650 have been relaxed - '/' is allowed in
R
Roger A. Light 已提交
1729
  usernames/client ids. Remainder of fix for #462.
1730

1731 1732 1733 1734
Clients:
- Don't use / in auto-generated client ids.


R
Roger A. Light 已提交
1735
1.4.12 - 20170528
R
[424]  
Roger A. Light 已提交
1736 1737
=================

R
Roger A. Light 已提交
1738 1739 1740 1741 1742 1743 1744 1745 1746
Security:
- Fix CVE-2017-7650, which allows clients with username or client id set to
  '#' or '+' to bypass pattern based ACLs or third party plugins. The fix
  denies message sending or receiving of messages for clients with a '#' or
  '+' in their username or client id and if the message is subject to a
  pattern ACL check or plugin check.
  Patches for other versions are available at
  https://mosquitto.org/files/cve/2017-7650/

R
[424]  
Roger A. Light 已提交
1747 1748 1749
Broker:
- Fix mosquitto.db from becoming corrupted due to client messages being
  persisted with no stored message. Closes #424.
R
Roger A. Light 已提交
1750
- Fix bridge not restarting properly. Closes #428.
R
Roger A. Light 已提交
1751
- Fix unitialized memory in gets_quiet on Windows. Closes #426.
R
Roger A. Light 已提交
1752 1753
- Fix building with WITH_ADNS=no for systems that don't use glibc. Closes
  #415.
1754
- Fixes to readme.md.
R
Roger A. Light 已提交
1755
- Fix deprecation warning for OpenSSL 1.1. PR #416.
1756
- Don't segfault on duplicate bridge names. Closes #446.
R
Roger A. Light 已提交
1757
- Fix CVE-2017-7650.
R
Roger A. Light 已提交
1758

R
[424]  
Roger A. Light 已提交
1759

R
Roger A. Light 已提交
1760 1761 1762
1.4.11 - 20170220
=================

1763 1764
Broker:
- Fix crash when "lazy" type bridge attempts to reconnect. Closes #259.
R
Roger A. Light 已提交
1765
- maximum_connections now applies to websockets listeners. Closes #271.
1766
- Allow bridges to use TLS with IPv6.
1767
- Don't error on zero length persistence files. Closes #316.
1768 1769
- For http only websockets clients, close files served over http in all cases
  when the client disconnects. Closes #354.
1770
- Fix error message when websockets http_dir directory does not exist.
1771
- Improve password utility error message. Closes #379.
1772

1773 1774 1775 1776
Clients:
- Use of --ciphers no longer requires you to also pass --tls-version.
  Closes #380.

1777 1778
Client library:
- Clients can now use TLS with IPv6.
1779
- Fix potential socket leakage when reconnecting. Closes #304.
1780
- Fix potential negative timeout being passed to pselect. Closes #329.
1781

1782

R
Roger A. Light 已提交
1783 1784
1.4.10 - 20160816
=================
1785 1786 1787 1788

Broker:
- Fix TLS operation with websockets listeners and libwebsockts 2.x. Closes
  #186.
1789
- Don't disconnect client on HUP before reading the pending data. Closes #7.
1790
- Fix some $SYS messages being incorrectly persisted. Closes #191.
R
Roger A. Light 已提交
1791
- Support OpenSSL 1.1.0.
1792 1793
- Call fsync after persisting data to ensure it is correctly written. Closes
  #189.
R
Roger A. Light 已提交
1794
- Fix persistence saving of subscription QoS on big-endian machines.
1795
- Fix will retained flag handling on Windows. Closes #222.
1796 1797
- Broker now displays an error if it is unable to open the log file. Closes
  #234.
R
Roger A. Light 已提交
1798 1799 1800

Client library:
- Support OpenSSL 1.1.0.
R
Roger A. Light 已提交
1801
- Fixed the C++ library not allowing SOCKS support to be used. Closes #198.
1802 1803
- Fix memory leak when verifying a server certificate with a subjectAltName
  section. Closes #237.
1804

1805 1806 1807
Build:
- Don't attempt to install docs when WITH_DOCS=no. Closes #184.

1808

R
Roger A. Light 已提交
1809
1.4.9 - 20160603
1810 1811
================

1812 1813 1814 1815
Broker:
- Ensure websockets clients that previously connected with clean session set
  to false have their queued messages delivered immediately on reconnecting.
  Closes #476314.
1816 1817
- Reconnecting client with clean session set to false doesn't start with mid=1
  again.
1818
- Will topic isn't truncated by one byte when using a mount_point any more.
1819
- Network errors are printed correctly on Windows.
1820
- Fix incorrect $SYS heap memory reporting when using ACLs.
1821 1822
- Bridge config parameters couldn't contain a space, this has been fixed.
  Closes #150.
1823
- Fix saving of persistence messages that start with a '/'. Closes #151.
R
Roger A. Light 已提交
1824
- Fix reconnecting for bridges that use TLS on Windows. Closes #154.
1825 1826
- Broker and bridges can now cope with unknown incoming PUBACK, PUBREC,
  PUBREL, PUBCOMP without disconnecting. Closes #57.
1827 1828
- Fix websockets listeners not being able to bind to an IP address. Closes
  #170.
1829 1830
- mosquitto_passwd utility now correctly deals with unknown command line
  arguments in all cases. Closes #169.
1831
- Fix publishing of $SYS/broker/clients/maximum
1832 1833
- Fix order of #includes in lib/send_mosq.c to ensure struct mosquitto doesn't
  differ between source files when websockets is being used. Closes #180.
1834 1835
- Fix possible rare crash when writing out persistence file and a client has
  incomplete messages inflight that it has been denied the right to publish.
1836

1837 1838 1839
Client library:
- Fix the case where a message received just before the keepalive timer
  expired would cause the client to miss the keepalive timer.
1840
- Return value of pthread_create is now checked.
1841 1842
- _mosquitto_destroy should not cancel threads that weren't created by
  libmosquitto. Closes #166.
1843 1844
- Clients can now cope with unknown incoming PUBACK, PUBREC, PUBREL, PUBCOMP
  without disconnecting. Closes #57.
1845 1846
- Fix mosquitto_topic_matches_sub() reporting matches on some invalid
   subscriptions.
1847

1848 1849
Clients:
- Handle some unchecked malloc() calls. Closes #1.
1850

1851 1852
Build:
- Fix string quoting in CMakeLists.txt. Closes #4.
1853
- Fix building on Visual Studio 2015. Closes #136.
1854 1855


1856
1.4.8 - 20160214
R
Roger A. Light 已提交
1857 1858
================

1859
Broker:
1860 1861 1862 1863 1864
- Wills published by clients connected to a listener with mount_point defined
  now correctly obey the mount point. This was a potential security risk
  because it allowed clients to publish messages outside of their restricted
  mount point. This is only affects brokers where the mount_point option is in
  use. Closes #487178.
1865
- Fix detection of broken connections on Windows. Closes #485143.
1866
- Close stdin etc. when daemonised. Closes #485589.
1867
- Fix incorrect detection of FreeBSD and OpenBSD. Closes #485131.
1868

1869 1870 1871 1872
Client library:
- mosq->want_write should be cleared immediately before a call to SSL_write,
  to allow clients using mosquitto_want_write() to get accurate results.

R
Roger A. Light 已提交
1873

1874 1875 1876 1877 1878 1879 1880
1.4.7 - 20151221
================

Broker:
- Fix support for libwebsockets 1.22.


R
Roger A. Light 已提交
1881
1.4.6 - 20151220
1882 1883
================

1884 1885 1886
Broker:
- Add support for libwebsockets 1.6.

1887 1888
Client library:
- Fix _mosquitto_socketpair() on Windows, reducing the chance of delays when
1889
  publishing. Closes #483979.
1890

1891 1892 1893
Clients:
- Fix "mosquitto_pub -l" stripping the final character on a line. Closes
  #483981.
1894

1895

R
Roger A. Light 已提交
1896 1897 1898
1.4.5 - 20151108
================

1899 1900 1901
Broker:
- Fix possible memory leak if bridge using SSL attempts to connect to a
  host that is not up.
1902 1903
- Free unused topic tree elements (fix in 1.4.3 was incomplete). Closes
  #468987.
1904

1905 1906 1907
Clients:
- "mosquitto_pub -l" now no longer limited to 1024 byte lines. Closes #478917.

1908

R
Roger A. Light 已提交
1909
1.4.4 - 20150916
1910 1911 1912 1913 1914
================

Broker:
- Don't leak sockets when outgoing bridge with multiple addresses cannot
  connect. Closes #477571.
1915
- Fix cross compiling of websockets. Closes #475807.
1916
- Fix memory free related crashes on openwrt. Closes #475707.
1917
- Fix excessive calls to message retry check.
1918 1919


R
Roger A. Light 已提交
1920 1921 1922
1.4.3 - 20150818
================

1923
Broker:
1924
- Fix incorrect bridge notification on initial connection. Closes #467096.
R
Roger A. Light 已提交
1925
- Build fixes for OpenBSD.
1926 1927
- Fix incorrect behaviour for autosave_interval, most noticable for
  autosave_interval=1. Closes #465438.
1928 1929
- Fix handling of outgoing QoS>0 messages for bridges that could not be sent
  because the bridge connection was down.
1930
- Free unused topic tree elements. Closes #468987.
1931
- Fix some potential memory leaks. Closes #470253.
1932
- Fix potential crash on libwebsockets error.
1933

1934 1935
Client library:
- Add missing error strings to mosquitto_strerror.
1936
- Handle fragmented TLS packets without a delay. Closes #470660.
1937 1938
- Fix incorrect loop timeout being chosen when using threaded interface and
  keepalive = 0. Closes #471334.
1939
- Increment inflight messages count correctly. Closes #474935.
1940 1941 1942 1943

Clients:
- Report error string on connection failure rather than error code.

1944

R
Roger A. Light 已提交
1945
1.4.2 - 20150507
1946 1947
================

1948 1949 1950
Broker:
- Fix bridge prefixes only working for the first outgoing message. Closes
  #464437.
1951
- Fix incorrect bridge connection notifications on local broker.
1952
- Fix persistent db writing on Windows. Closes #464779.
1953
- ACLs are now checked before sending a will message.
1954
- Fix possible crash when using bridges on Windows. Closes #465384.
1955
- Fix parsing of auth_opt_ arguments with extra spaces/tabs.
1956 1957
- Broker will return CONNACK rc=5 when a username/password is not authorised.
  This was being incorrectly set as rc=4.
1958
- Fix handling of payload lengths>4096 with websockets.
1959

1960 1961 1962 1963
Client library:
- Inflight message count wasn't being decreased for outgoing messages using
  QoS 2, meaning that only up to 20 QoS 2 messages could be sent. This has
  been fixed. Closes #464436.
1964
- Fix CMake dependencies for C++ wrapper building. Closes #463884.
1965 1966 1967
- Fix possibility of select() being called with a socket that is >FD_SETSIZE.
  This is a fix for #464632 that will be followed up by removing the select()
  call in a future version.
1968
- Fix calls to mosquitto_connect*_async() not completing.
1969

1970

R
Roger A. Light 已提交
1971
1.4.1 - 20150403
1972 1973
================

1974
Broker:
1975
- Fix possible crash under heavy network load. Closes #463241.
1976
- Fix possible crash when using pattern ACLs.
1977 1978
- Fix problems parsing config strings with multiple leading spaces. Closes
  #462154.
1979 1980
- Websockets clients are now periodically disconnected if they have not
  maintained their keepalive timer. Closes #461619.
1981
- Fix possible minor memory leak on acl parsing.
1982

1983 1984
Client library:
- Inflight limits should only apply to outgoing messages. Closes #461620.
1985
- Fix reconnect bug on Windows. Closes #463000.
1986
- Return -1 on error from mosquitto_socket(). Closes #461705.
1987 1988
- Fix crash on multiple calls to mosquitto_lib_init/mosquitto_lib_cleanup.
  Closes #462780.
1989
- Allow longer paths on Windows. Closes #462781.
1990
- Make _mosquitto_mid_generate() thread safe. Closes #463479.
1991

1992

R
Roger A. Light 已提交
1993
1.4 - 20150218
1994 1995
==============

R
Roger A. Light 已提交
1996
Important changes:
R
Roger A. Light 已提交
1997
- Websockets support in the broker.
R
Roger A. Light 已提交
1998 1999 2000 2001 2002 2003 2004 2005
- Bridge behaviour on the local broker has changed due to the introduction of
  the local_* options. This may affect you if you are using authentication
  and/or ACLs with bridges.
- The default TLS behaviour has changed to accept all of TLS v1.2, v1.1 and
  v1.0, rather than only only one version of the protocol. It is still
  possible to restrict a listener to a single version of TLS.
- The Python client has been removed now that the Eclipse Paho Python client
  has had a release.
2006 2007 2008
- When a durable client reconnects, its queued messages are now checked
  against ACLs in case of a change in username/ACL state since it last
  connected.
R
Roger A. Light 已提交
2009 2010
- New use_username_as_clientid option on the broker, for preventing hijacking
  of a client id.
2011
- The client library and clients now have experimental SOCKS5 support.
2012
- Wildcard TLS certificates are now supported for bridges and clients.
R
Roger A. Light 已提交
2013
- The clients have support for config files with default options.
2014
- Client and client libraries have support for MQTT v3.1.1.
R
Roger A. Light 已提交
2015
- Bridge support for MQTT v3.1.1.
R
Roger A. Light 已提交
2016 2017


2018
Broker:
R
Roger A. Light 已提交
2019
- Websockets support in the broker.
R
Roger A. Light 已提交
2020 2021
- Add local_clientid, local_username, local_password for bridge connections to
  authenticate to the local broker.
2022
- Default TLS mode now accepts TLS v1.2, v1.1 and v1.0.
2023
- Support for ECDHE-ECDSA family ciphers.
R
Roger A. Light 已提交
2024 2025
- Fix bug #1324411, which could have had unexpected consequences for delayed
  messages in rare circumstances.
2026
- Add support for "session present" in CONNACK messages for MQTT v3.1.1.
R
Roger A. Light 已提交
2027
- Remove strict protocol #ifdefs.
2028 2029
- Change $SYS/broker/clients/active -> $SYS/broker/clients/connected
- Change $SYS/broker/clients/inactive -> $SYS/broker/clients/disconnected
2030 2031 2032
- When a durable client reconnects, its queued messages are now checked
  against ACLs in case of a change in username/ACL state since it last
  connected.
2033 2034
- libuuid is used to generate client ids, where it is available, when an MQTT
  v3.1.1 client connects with a zero length client id.
2035 2036
- Anonymous clients are no longer accidently disconnected from the broker
  after a SIGHUP.
2037 2038
- mosquitto_passwd now supports -b (batch mode) to allow the password to be
  provided at the command line.
R
Roger A. Light 已提交
2039 2040
- Removed $SYS/broker/changeset. This was intended for use with debugging, but
  in practice is of no use.
R
Roger A. Light 已提交
2041 2042 2043
- Add support for use_username_as_clientid which can be used with
  authentication to restrict ownership of client ids and hence prevent one
  client disconnecting another by using the same client id.
2044 2045 2046
- When "require_certificate" was false, the broker was incorrectly asking for
  a certificate (but not checking it). This caused problems with some clients
  and has been fixed so the broker no longer asks.
2047 2048
- When using syslog logging on non-Windows OSs, it is now possible to specify
  the logging facility to one of local0-7 instead of the default "daemon".
2049 2050 2051
- The bridge_attempt_unsubscribe option has been added, to allow the sending
  of UNSUBSCRIBE requests to be disabled for topics with "out" direction.
  Closes bug #456899.
2052
- Wildcard TLS certificates are now supported for bridges.
2053 2054
- Support for "hour" client expiration lengths for the
  persistent_client_expiration option. Closes bug #425835.
R
Roger A. Light 已提交
2055
- Bridge support for MQTT v3.1.1.
2056 2057 2058
- Root privileges are now dropped after starting listeners and loading
  certificates/private keys, to allow private keys to have their permissions
  restricted to the root user only. Closes bug #452914.
2059 2060
- Usernames and topics given in ACL files can now include a space. Closes bug
  #431780.
2061 2062
- Fix hang if pattern acl contains a %u but an anonymous client connect.
  Closes bug #455402.
2063
- Fix man page installation with cmake. Closes bug #458843.
2064
- When using "log_dest file" the output file is now flushed periodically.
2065

2066 2067
Clients:
- Both clients can now load default configuration options from a file.
2068 2069
- Add -C option to mosquitto_sub to allow the client to quit after receiving a
  certain count of messages. Closes bug #453850.
2070
- Add --proxy SOCKS5 support for both clients.
2071
- Pub client supports setting its keepalive. Closes bug #454852.
R
Roger A. Light 已提交
2072
- Add support for config files with default options.
2073
- Add support for MQTT v3.1.1.
2074

2075
Client library:
2076
- Add experimental SOCKS5 support.
2077 2078
- mosquitto_loop_forever now quits after a fatal error, rather than blindly
  retrying.
2079
- SRV support is now not compiled in by default.
2080
- Wildcard TLS certificates are now supported.
2081
- mosquittopp now has a virtual destructor. Closes bug #452915.
2082
- Add support for MQTT v3.1.1.
2083 2084
- Don't quit mosquitto_loop_forever() if broker not available on first
  connect. Closes bug #453293, but requires more work.
2085 2086
- Don't reset queued messages state on CONNACK. Fixes bug with duplicate
  messages on connection.
2087

2088

R
Roger A. Light 已提交
2089
1.3.5 - 20141008
2090 2091 2092
================

Broker:
2093 2094
- Fix possible memory leak when using a topic that has a leading slash. Fixes
  bug #1360985.
2095
- Fix saving persistent database on Windows.
2096 2097 2098 2099 2100
- Temporarily disable ACL checks on subscriptions when using MQTT v3.1.1. This
  is due to the complexity of checking wildcard ACLs against wildcard
  subscriptions. This does not have a negative impact on security because
  checks are still made before a message is sent to a client.
  Fixes bug #1374291.
2101 2102
- When using -v and the broker receives a SIGHUP, verbose logging was being
  disabled. This has been fixed.
2103

2104 2105 2106
Client library:
- Fix mutex being incorrectly passed by value. Fixes bug #1373785.

R
Roger A. Light 已提交
2107
1.3.4 - 20140806
2108 2109 2110 2111
================

Broker:
- Don't ask client for certificate when require_certificate is false.
R
Roger A. Light 已提交
2112
- Backout incomplete functionality that was incorrectly included in 1.3.2.
2113

2114 2115 2116 2117 2118 2119
1.3.3 - 20140801
================

Broker:
- Fix incorrect handling of anonymous bridges on the local broker.

R
Roger A. Light 已提交
2120
1.3.2 - 20140713
2121 2122 2123
================

Broker:
2124 2125
- Don't allow access to clients when authenticating if a security plugin
  returns an application error. Fixes bug #1340782.
2126
- Ensure that bridges verify certificates by default when using TLS.
2127 2128
- Fix possible crash when using pattern ACLs that do not include a %u and
  clients that connect without a username.
2129 2130
- Fix subscriptions being deleted when clients subscribed to a topic beginning
  with a $ but that is not $SYS.
2131 2132 2133
- When a durable client reconnects, its queued messages are now checked
  against ACLs in case of a change in username/ACL state since it last
  connected.
R
Roger A. Light 已提交
2134 2135
- Fix bug #1324411, which could have had unexpected consequences for delayed
  messages in rare circumstances.
2136 2137
- Anonymous clients are no longer accidently disconnected from the broker
  after a SIGHUP.
2138

R
Roger Light 已提交
2139 2140
Client library:
- Fix topic matching edge case.
2141 2142
- Fix callback deadlocks after calling mosquitto_disconnect(), when using the
  threaded interfaces. Closes bug #1313725.
2143
- Fix SRV support when building with CMake.
R
Roger A. Light 已提交
2144
- Remove strict protocol #ifdefs.
R
Roger Light 已提交
2145

2146 2147 2148
General:
- Use $(STRIP) for stripping binaries when installing, to allow easier cross
  compilation.
R
Roger Light 已提交
2149

R
Roger Light 已提交
2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166
1.3.1 - 20140324
================

Broker:
- Prevent possible crash on client reconnect. Closes bug #1294108.
- Don't accept zero length unsubscription strings (MQTT v3.1.1 fix)
- Don't accept QoS 3 (MQTT v3.1.1 fix)
- Don't disconnect clients immediately on HUP to give chance for all data to
  be read.
- Reject invalid un/subscriptions e.g. foo/+bar #/bar.
- Take more care not to disconnect clients that are sending large messages.

Client library:
- Fix socketpair code on the Mac.
- Fix compilation for WITH_THREADING=no.
- Break out of select() when calling mosquitto_loop_stop().
- Reject invalid un/subscriptions e.g. foo/+bar #/bar.
R
Roger A. Light 已提交
2167
- Add mosquitto_threaded_set().
R
Roger Light 已提交
2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239

Clients:
- Fix keepalive value on mosquitto_pub.
- Fix possibility of mosquitto_pub not exiting after sending messages when
  using -l.

1.3 - 20140316
==============

Broker:
- The broker no longer ignores the auth_plugin_init() return value.
- Accept SSLv2/SSLv3 HELLOs when using TLSv1, whilst keeping SSLv2 and SSLv3
  disabled. This increases client compatibility without sacrificing security.
- The $SYS tree can now be disabled at runtime as well as at compile time.
- When remapping bridged topics, only check for matches when the message
  direction is correct. This allows two identical topics to be remapped
  differently for both in and out.
- Change "$SYS/broker/heap/current size" to "$SYS/broker/heap/current" for
  easier parsing.
- Change "$SYS/broker/heap/maximum size" to "$SYS/broker/heap/maximum" for
  easier parsing.
- Topics are no longer normalised from e.g a///topic to a/topic. This matches
  the behaviour as clarified by the Oasis MQTT spec. This will lead to
  unexpected behaviour if you were using topics of this form.
- Log when outgoing messages for a client begin to drop off the end of the
  queue.
- Bridge clients are recognised as bridges even after reloading from
  persistence.
- Basic support for MQTT v3.1.1. This does not include being able to bridge to
  an MQTT v3.1.1 broker.
- Username is displayed in log if present when a client connects.
- Support for 0 length client ids (v3.1.1 only) that result in automatically
  generated client ids on the broker (see option allow_zero_length_clientid).
- Ability to set the prefix of automatically generated client ids (see option
  auto_id_prefix).
- Add support for TLS session resumption.
- When using TLS, the server now chooses the cipher to use when negotiating
  with the client.
- Weak TLS ciphers are now disabled by default.

Client library:
- Fix support for Python 2.6, 3.0, 3.1.
- Add support for un/subscribing to multiple topics at once in un/subscribe().
- Clients now close their socket after sending DISCONNECT.
- Python client now contains its version number.
- C library mosquitto_want_write() now supports TLS clients.
- Fix possible memory leak in C/C++ library when communicating with
  a broker that doesn't follow the spec.
- Return strerror() through mosquitto_strerror() to make error printing
  easier.
- Topics are no longer normalised from e.g a///topic to a/topic. This matches
  the behaviour as clarified by the Oasis MQTT spec. This will lead to
  unexpected behaviour if you were using topics of this form.
- Add support for SRV lookups.
- Break out of select() on publish(), subscribe() etc. when using the threaded
  interface. Fixes bug #1270062.
- Handle incoming and outgoing messages separately. Fixes bug #1263172.
- Don't terminate threads on mosquitto_destroy() when a client is not using
  the threaded interface but does use their own thread. Fixes bug #1291473.

Clients:
- Add --ciphers to allow specifying which TLS ciphers to support.
- Add support for SRV lookups.
- Add -N to sub client to suppress printing of EOL after the payload.
- Add -T to sub client to suppress printing of a topic hierarchy.

1.2.3 - 20131202
================

Broker:
- Don't always attempt to call read() for SSL clients, irrespective of whether
  they were ready to read or not. Reduces syscalls significantly.
2240
- Possible memory leak fixes.
R
Roger Light 已提交
2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705
- Further fix for bug #1226040: multiple retained messages being delivered for
  subscriptions ending in #.
- Fix bridge reconnections when using multiple bridge addresses.

Client library:
- Fix possible memory leak in C/C++ library when communicating with
  a broker that doesn't follow the spec.
- Block in Python loop_stop() until all messages are sent, as the
  documentation states should happen.
- Fix for asynchronous connections on Windows. Closes bug #1249202.
- Module version is now available in mosquitto.py.

Clients:
- mosquitto_sub now uses fwrite() instead of printf() to output messages, so
  messages with NULL characters aren't truncated.

1.2.2 - 20131021
================

Broker:
- Fix compliance with max_inflight_messages when a non-clean session client
  reconnects. Closes one of the issues on bug #1237389.

Client library:
- Fix incorrect inflight message accounting, which caused messages to go
  unsent. Partial fix for bug #1237351.
- Fix potential memory corruption when sending QoS>0 messages at a high rate
  using the threaded interface. Further fix for #1237351.
- Fix incorrect delay scaling when exponential_backoff=true in
  mosquitto_reconnect_delay_set().
- Some pep8 fixes for Python.

1.2.1 - 20130918
================

Broker:
- The broker no longer ignores the auth_plugin_init() return value. Closes
  bug #1215084.
- Use RTLD_GLOBAL when opening authentication plugins on posix systems. Fixes
  resolving of symbols in libraries used by authentication plugins.
- Add/fix some config documentation.
- Fix ACLs for topics with $SYS.
- Clients loaded from the persistence file on startup were not being added to
  the client hash, causing subtle problems when the client reconnected,
  including ACLs failing. This has been fixed.
- Add note to mosquitto-tls man page stating that certificates need to be
  unique. Closes bug #1221285.
- Fix incorrect retained message delivery when using wildcard subs in some
  circumstances. Fixes bug #1226040.

Client library:
- Fix support for Python 2.6, 3.0, 3.1.
- Fix TLS subjectAltName verification and segfaults.
- Handle EAGAIN in Python on Windows. Closes bug #1220004.
- Fix compilation when using WITH_TLS=no.
- Don't fail reconnecting in Python when broker is temporarily unavailable.

1.2 - 20130708
==============

Broker:
- Replace O(n) username lookup on CONNECT with a roughly O(1) hashtable version.
- It is now possible to disable $SYS at compile time.
- Add dropped publish messages to load tree in $SYS. Closes bug #1183318.
- Add support for logging SUBSCRIBE/UNSUBSCRIBE events.
- Add "log_dest file" logging support.
- Auth plugin ACL check function now passes the client id as well as username
  and password.
- The queue_qos0_messages option wasn't working correctly, this has now been
  fixed. Closes bug #1125200.
- Don't drop all messages for disconnected durable clients when
  max_queued_messages=0.
- Add support for "log_type all".
- Add support for "-v" option on the command line to provide the equivalent of
  "log_type all" without needing a config file.
- Add the "upgrade_outgoing_qos" option, a non-standard feature.
- Persistence data is now written to a temporary file which is atomically
  renamed on completion, so a crash during writing will not produce a corrupt
  file.
- mosquitto.conf is now installed as mosquitto.conf.example
- Configuration file errors are now reported with filename and line number.
- The broker now uses a monotonic clock if available, to avoid changes in time
  causing client disconnections or message retries.
- Clean session and keepalive status are now display the log when a client
  connects.
- Add support for TLSv1.2 and TLSv1.1.
- Clients that connect with zero length will topics are now rejected.
- Add the ability to set a maximum allowed PUBLISH payload size.
- Fix an ACL with topic "#" incorrectly granting access to $SYS.
- Fix retained messages incorrectly being set on wildcard topics, leading to
  duplicate retained messages being sent on subscription. Closes bug #1116233.
- Don't discard listener values when no "port" option given. Closes bug
  #1131406.
- Client password check was always failing when security was being reapplied
  after a config reload. This meant that all clients were being disconnected.
  This has been fixed.
- Fix build when WITH_TLS=no. Closes bug #1174971.
- Fix single outgoing packets not being sent in a timely fashion if they were
  not sent in one call to write(). Closes bug #1176796.
- Fix remapping of messages for clients connected to a listener with
  mount_point set. Closes bug #1180765.
- Fix duplicate retained messages being sent for some wildcard patterns.
- If a client connects with a will topic to which they do not have write
  access, they are now disconnected with CONNACK "not authorised".
- Fix retained messages on topic foo being incorrectly delivered to
  subscriptions of /#
- Fix handling of SSL errors on SSL_accept().
- Fix handling of QoS 2 messages on client reconnect.
- Drop privileges now sets supplementary groups correctly.
- Fix load reporting interval (is now 60s).
- Be strict with malformed PUBLISH packets - clients are now disconnected
  rather than the packet discarded. This goes inline with future OASIS spec
  changes and makes other changes more straightforward.
- Process incoming messages denied by ACL properly so that clients don't keep
  resending them.

- Add support for round_robin bridge option.
- Add bridge support for verifying remote server certificate subject against
  the remote hostname.
- Fix problem with out of order calls to free() when restarting a lazy bridge.
- The broker now attempts to resolve bind_address and bridge addresses
  immediately when parsing the config file in order to detect invalid hosts.
- Bridges now set their notification state before attempting to connect, so if
  they fail to connect the state can still be seen.
- Fix bridge notification payload length - no need to send a null byte.

- mosquitto_passwd utility now reports errors more clearly.
- Fix "mosquitto_passwd -U".

Client library:
- Add support for TLSv1.2 and TLSv1.1, except for on the Python module.
- Add support for verifying remote server certificate subject against the
  remote hostname.
- Add mosquitto_reconnect_async() support and make asynchronous connections
  truely asynchronous rather than simply deferred. DNS lookups are still
  blocking, so asynchronous connections require an IP address instead of
  hostname.
- Allow control of reconnection timeouts in mosquitto_loop_forever() and after
  mosquitto_loop_start() by using mosquitto_reconnect_delay_set().
- Fix building on Android NDK.
- Re-raise unhandled errors in Python so as not to provide confusing error
  messages later on.
- Python module supports IPv6 connections.
- mosquitto_sub_topic_tokenise() was behaving incorrectly if the last topic
  hierarchy had only a single character. This has been fixed. Closes bug
  #1163348.
- Fix possible crash after disconnects when using the threaded interface with
  TLS.
- Allow build/install without Python. Closes bug #1174972.
- Add support for binding connection to a local interface.
- Implement maximum inflight messages handling.
- Fix Python client not handling will_payload==None.
- Fix potential memory leak when setting username/password.
- Fix handling of QoS 2 messages on reconnect.
- Improve handling of mosquitto_disconnect() with threaded mode.


Clients:
- Add support for TLSv1.2 and TLSv1.1.
- Sub client can now suppress printing of messages with the retain bit set.
- Add support for binding connection to a local interface.
- Implement maximum inflight messages handling for the pub client.

1.1.3 - 20130211
================

Broker:
- mosquitto_passwd utility now uses tmpfile() to generate its temporary data
  storage file. It also creates a backup file that can be used to recover data
  if an errors occur.

Other:
- Build script fixes to help packaging on Debian.

1.1.2 - 20130130
================

Client library:
- Fix tls_cert_reqs not being set to SSL_VERIFY_PEER by default. This meant
  that clients were not verifying the server certificate when connecting over
  TLS. This affects the C, C++ and Python libraries.

1.1.1 - 20130116
================

Broker:
- Fix crash on reload if using acl patterns.

Client library:
- Fix static C++ functions not being exported on Windows. Fixes bug #1098256.

1.1 - 20121219
==============

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.

1.0.5 - 20121103
================

Broker:
- Fix crash when the broker has use_identity_as_username set to true but a
  client connects without a certificate.
- mosquitto_passwd should only be installed if WITH_TLS=yes.

Library:
- Use symbolic errno values rather than numbers in Python module to avoid
  cross platform issues (incorrect errno on Mac OS).

Other:
- Build script fixes for FreeBSD.

1.0.4 - 20121017
================

Broker:
- Deal with poll() POLLIN/POLLOUT before POLL[RD]HUP to correctly handle the
  case where a client sends data and immediately closes its socket.

Library:
- Fix memory leak with messages of QoS=2. Fixes bug #1064981.
- Fix potential thread synchronisation problem with outgoing packets in the
  Python module. Fixes bug #1064977.

Clients:
- Fix "mosquitto_sub -l" incorrectly only sending one message per second.

1.0.3 - 20120927
================

Broker:
- Fix loading of psk files.
- Don't return an error when reloading config if an ACL file isn't defined.
  This was preventing psk files being reloaded.
- Clarify meaning of $SYS/broker/clients/total in mosquitto(8) man page.
- Clarify meaning of $SYS/broker/messages/stored in mosquitto(8) man page.
- Fix non-retained message delivery when subscribing to #.
- Fix retained message delivery for subs to foo/# with retained messages at
  foo.
- Include the filename in password/acl file loading errors.

Library:
- Fix possible AttributeError when self._sock == None in Python module.
- Fix reconnecting after a timeout in Python module.
- Fix reconnecting when there were outgoing packets in the queue in the Python
  module.
- Fix problem with mutex initialisation causing crashes on some Windows
  installations.

1.0.2 - 20120919
================

Broker:
- If the broker was configured for persistence, a durable client had a
  subscription to topics in $SYS/# and had messages in its queue when the
  broker restarted, then the persistent database would have messages missing
  and so the broker would not restart properly. This has been fixed.

Library:
- Fix threading problem on some systems.

Tests:
- Close socket after 08-ssl-connect-no-auth-wrong-ca.py test to prevent
  subsequent tests having problems.

Build scripts:
- Install pskfile.example in CMake. Fixes bug #1037504.

Other:
- Fix db_dump parameter printing message store and sub chunks.

1.0.1 - 20120815
================

Broker:
- Fix default log_dest when running as a Windows service.

Client library:
- Fix incorrect parameters in Python on_log() callback call. Fixes bug
  #1036818.

Clients:
- Clients now don't display TLS/TLS-PSK usage help if they don't support it.

Build scripts:
- Fix TLS-PSK support in the CMake build files.
- Fix man page installation in the CMake build files.
- Fix SYSCONFDIR in cmake on *nix when installing to /usr. Fixes bug #1036908.

Documentation:
- Fix mqtt/MQTT capitalisation in man pages.
- Update compiling.txt.
- Fix incorrect callback docs in mosquitto.py. Fixes bug #1036607.
- Fix various doc typos and remove obsolete script. Fixes bug #1037088.

1.0 - 20120814
==============

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.

Client library:

- 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
2706
  libmosquitto.
R
Roger Light 已提交
2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841
- 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.

0.15 - 20120205
===============

- Add support for $SYS/broker/clients/maximum and $SYS/broker/clients/active
  topics.
- Add support for $SYS messages/byte per second received/sent topics.
- Updated mosquitto man page - $SYS hierarchy and signal support were out of
  date.
- Auto generated pub/sub client ids now include the hostname.
- Tool for dumping persistent DB contents is available in src/db_dump. It isn't
  installed by default.
- Enforce topic length checks in client library.
- Implement "once" and "lazy" bridge start types.
- Add new return type MOSQ_ERR_ERRNO to indicate that the errno variable should
  be checked for the real error code.
- Add support for connection_messages config option.
- mosquitto_sub will now refuse to run if the -c option (disable clean session)
  is given and no client id is provided.
- mosquitto_pub now gives more useful error messages on invalid input or other
  error conditions.
- Fix Python will_set() true/True typo.
- Fix messages to topic "a/b" incorrectly matching on a subscription "a" if
  another subscription "a/#" exists.

0.14.4 - 20120106
=================

- Fix local bridge notification messages.
- Fix return values for more internal library calls.
- Fix incorrect out of memory checks in library and broker.
- Never time out local bridge connections.

0.14.3 - 20111210
=================

- Fix potential crash when client connects with an invalid CONNECT packet.
- Fix incorrect invalid socket comparison on Windows.
- Server shouldn't crash when a message is published to foo/ when a
  subscription to foo/# exists (bug #901697).
- SO_REUSEADDR doesn't work the same on Windows, so don't use it.
- Cygwin builds now support Windows service features.
- Fix $SYS/broker/bytes/sent reporting.

0.14.2 - 20111123
=================

- Add uninstall target for libs.
- Don't try to write packet whilst in a callback.

0.14.1 - 20111117
=================

- Fix Python sytax errors (bug #891673).

0.14 - 20111116
===============

- Add support for matching ACLs based on client id and username.
- Add a Windows installer file (NSIS based).
- Add native support for running the broker as a Windows service. This is the
  default when installed using the new installer.
- Fix client count for listeners. When clients disconnect, decrement the
  count. Allow max_connections to work again.
- Attempt to send all packets immediately upon being queued. This will result
  in more immediate network communication in many cases.
- Log IP address when reporting CONNACK packets if the client id isn't yet
  known.
- Fix payload length calculation in python will_set function.
- Fix Python publish and will_set functions for payload=None.
- Fix keepalive value being lost when reconnecting a client (bug #880863).
- Persistence file writing now uses portable file functions, so the Cygwin
  broker build should no longer be necessary.
- Duplicate code between the client and broker side has been reduced.
- Queued messages for clients reconnecting with clean_session=false set were
  not being sent until the next message for that client was received. This has
  been fixed (bug #890724).
- Fix subscriptions to # incorrectly matching against topics beginning with /

0.13 - 20110920
===============

- Implement bridge state notification messages.
- Save client last used mid in persistent database (DB version number bumped).
- Expose message id in Python MosquittoMessage.
- It is now possible to set the topic QoS level for bridges.
- Python MosquittoMessage payload parameter is now a Python string, not a
  ctypes object which makes it much easier to use.
- Fix queueing of messages for disconnected clients. The max_queued_messages
  option is now obeyed.
- C++ library is now in its own namespace, mosquittopp.
- Add support for adding log message timestamps in the broker.
- Fix missing mosquitto_username_pw_set() python binding.
- Fix keepalive timeout for reconnecting non clean-session clients. Prevents
  immediate disconnection on reconnection.
- Fix subscription wildcard matching - a subscription of +/+ will now match
  against /foo
- Fix subscription wildcard matching - a subscription of foo/# will now match
  against foo
- When restoring persistent database, clients should be set to non
  clean-session or their subscriptions will be immediately removed.
- Fix SUBACK payload for multiple topic subscriptions.
- Don't send retained messages when a client subscribes to a topic it is
  already subscribed to.

0.12 - 20110725
===============

- Reload (most) configuration on SIGHUP.
- Memory tracking is no longer compiled in the client library.
- Add --help option to mosquitto to display usage.
- Add --id-prefix option to clients to allow easier use with brokers that are
  using the clientid_prefix option.
- Fix compilation on QNX.
- Add -P as a synonym argument for --pw in the clients.
- Fix python MosquittoMessage payload parameter. This is now returned as a
  pointer to an array of c_uint8 values so binary data is handled correctly.
  If a string is needed, use msg.payload_str
- Fix memory leaks on client authentication.
- If password_file is not defined then clients can now connect even if they
  use a username/password.
- Add mosquitto_reconnect() to the client library.
- Add option for compiling with liberal protocol compliance support (enabled
2842
  by default).
R
Roger Light 已提交
2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927
- Fix problems with clients reconnecting and old messages remaining in the
  message store.
- Display both ip and client id in the log message when a client connects.
  Change the socket connection message to make it more obvious that it is just
  a socket connection being made (bug #801135).
- Fix retained message delivery where a subscription contains a +.
- Be more lenient when reloading persistent database to reduce errors with
  empty retained messages.

0.11.3 - 20110707
=================

- Don't complain and quit if persistence_file option is given (bug #802423).
- Initialise listeners correctly when clients with duplicate client ids
  connect. Bug #801678.
- Memory tracking is now disabled for Symbian builds due to lack of malloc.h.
- Fix memory tracking compilation for kFreeBSD.
- Python callbacks can now be used with class member functions.
- Fix persistent database writing of client message chunks which caused
  errors when restoring (bug #798164).

0.11.2 - 20110626
=================

- Don't free contexts in mqtt3_context_disconnect() (bug #799688 / #801678).
- Only free will if present when freeing a client context.

0.11.1 - 20110620
=================

- Fix buffer overrun when checking for + and # in topics (bug #799688).
- Pub client now quits if publish fails.

0.11 - 20110619
===============

- Removed all old sqlite code.
- Remove client id limit in clients.
- Implemented $SYS/broker/heap/maximum size
- Implemented $SYS/broker/clients/inactive to show the number of disconnected
  non-clean session clients.
- $SYS/broker/heap/current size and maximum size messages now include "bytes"
  to match rsmb message format.
- Implemented the retained_persistence config file option - a synonym of the
  "persistence" option.
- Added security_external.c to broker source to make it easier for third
  parties to add support for their existing username/password and ACL database
  for security checks. See external_security_checks.txt.
- $SYS messages are now only republished when their value changes.
- Windows native broker now responds to command line arguments.
- Simplify client disconnecting so wills gets sent in all cases (bug #792468).
- Clients now have a --quiet option.
- The on_disconnect() callback will always be called now, even if the client
  has disconnected unexpectedly.
- Always close persistent DB file after restoring.
- Return error code when exiting the clients.
- mosquitto_publish() now returns MOSQ_ERR_INVAL if the topic contains + or #
- mosquitto now silently rejects published messages with + or # in the topic.
- max_connections is now a per-listener setting instead of global.
- Connection count is now reduced when clients disconnect (bug #797983).

0.10.2 - 20110106
=================

- Don't abort when connecting if the first connection fails. This is important
  on e.g. Windows 7, where IPV6 is offered as the first choice but may not be
  available.
- Deal with long logging messages properly (bug #785882).
- Fix library compilation on Symbian - no pselect() available.
- Don't stop processing subscriptions on received messages after a
  subscription with # matches. (bug #791206).

0.10.1 - 20110512
=================

- Fix Windows compilation.
- Fix mosquitto.py on Windows - call lib init/cleanup.
- Don't abort when connecting if given an unknown address type (assuming an
  IPv4 or IPv6 address is given).

0.10 - 20110429
===============

- Implement support for the password_file option and accompanying
  authentication requirements in the broker.
2928
- Implement topic Access Control Lists.
R
Roger Light 已提交
2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002
- mosquitto_will_set() and mosquitto_publish() now return
  MOSQ_ERR_PAYLOAD_SIZE if the payload is too large (>268,435,455 bytes).
- Bridge support can now be disabled at compile time.
- Group together network writes for outgoing packets - don't send single byte
  writes!
- Add support for clientid_prefixes variable.
- Add support for the clientid config variable for controlling bridge client
  ids.
- Remove 32-bit database ID support because htobe64() no longer used.
- Multiple client subscriptions to the same topic result in only a single
  subscription. Bug #744077.

0.9.3 - 20110310
================

- Set retained message status for QoS 2 messages (bug #726535).
- Only abort with an error when opening listening sockets if no address family
  is available, rather than aborting when any address family is not available.
- Don't clean queued messages when a non clean session client reconnects.
- Make mosquitto.py compatible with Python <2.6.
- Fix mosquitto.h header includes for Windows.

0.9.2 - 20110208
================

- Only send a single DISCONNECT command when using -l in the pub client.
- Set QoS=1 on PUBREL commands to meet protocol spec.
- Don't leak sockets on connection failure in the library.
- Install man pages when building under cmake.
- Fix crash bug on malformed CONNECT message.
- Clients are now rejected if their socket peer name cannot be obtained on
  connection.
- Fix a number of potential problems caused when a client with a duplicate id
  connects.
- Install mosquitto.conf under cmake.

0.9.1 - 20101203
================

- Add missing code for parsing the "bind_address" configuration option.
- Fix missing include when compiling with tcp-wrappers support.
- Add linker version script for C library to control exported functions.

0.9 - 20101114
==============

- Client and message data is now stored in memory with custom routines rather
  than a sqlite database. This removes the dependencies on sqlite, pcre and
  sqlite3-pcre. It also means that the persistent database format has had to
  be reimplemented in a custom format. Optional support for importing old
  sqlite databases is provided.
- Added IPv6 support for mosquitto and the clients.
- Provide username and password support for the clients and client libraries.
  This is part of the new MQTT v3.1 spec.
- The broker supports the username and password connection flags, but will not
  do anything with the username and password.
- Python callback functions now optionally take an extra argument which will
  return the user object passed to the Mosquitto() constructor, or the calling
  python object itself if nothing was given to Mosquitto().
- Remove the mosquitto command line option "-i interface".
- Remove the mosquitto.conf "interface" variable.
- Add support for the listener config variable (replaces the interface
  variable)
- Add support for the bind_address config variable.
- Change the port config variable behaviour to match that of rsmb (applies to
  the default listener only, can be given just once).
- Fix QoS 2 protocol compliance - stop sending duplicate messages and handle
  timeouts correctly. Fixes bug #598290.
- Set retain flag correctly for outgoing messages. It should only be set for
  messages sent in response to a subscribe command (ie. stale data).
- Fix bug in returning correct CONNACK result to on_connect client callback.
- Don't send client will if it is disconnected for exceeding its keepalive
  timer.
- Fix client library unsubscribe function incorrectly sending a SUBSCRIBE
3003
  command when it should be UNSUBSCRIBE.
R
Roger Light 已提交
3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145
- Fix max_inflight_messages and max_queued_messages operation. These
  parameters now apply only to QoS 1 and 2 messages and are used regardless of
  the client connection state.
- mosquitto.conf now installed to /etc/mosquitto/mosquitto.conf instead of
  /etc/mosquitto.conf. The /etc/mosquitto/ directory will be used for password
  and access control files in the future.
- Give the compile time option of using 32-bit integers for the database IDs
  instead of 64-bit integers. This is useful where htobe64()/be64toh() are not
  available or for embedded systems for example.
- The DUP bit is now set correctly when resending PUBREL messages.
- A port to Windows native has been partially completed. This currently drops a
  number of features, including the ability to change configuration parameters
  and persistent storage.

0.8.3 - 20101004
================

- Fix QoS 2 protocol compliance - stop sending duplicate messages and handle
  timeouts correctly. Fixes bug #598290. (backported from future 0.9 code)

0.8.2 - 20100815
================

- Fix default loop() timeout value in mosquitto.py. Previous value was 0,
  causing high cpu load.
- Fix message handling problem in client library when more than one message was
  in the client queue.
- Fix the logic used to determine whether a QoS>0 message needs to be retried.
- Fix the Python sub.py example so that it quits on error.

0.8.1 - 20100812
================

- Improve python interface
- Fix incorrect return value from message delete function
- Use logging function to print error messages in clients.
- Fix python installation script DESTDIR.
- Fix library destination path for 64-bit machines.

0.8 - 20100807
==============

- Topics starting with a / are treated as distinct to those not starting with
  a /. For example, /topic/path is different to topic/path. This matches the
  behaviour of rsmb.
- Correctly calculate the will QoS on a new client connection (bug #597451).
- Add "addresses" configuration file variable as an alias of "address", for
  better rsmb compatibility.
- Bridge clean_session setting is now false, to give more sensible behaviour
  and be more compatible with rsmb.
- Add cleansession variable for configuring bridges.
- Add keepalive_interval variable for bridges.
- Remove default topic subscription for mosquitto_sub because the old
  behaviour was too confusing.
- Added a C client library, which the pub and sub clients now use.
- Added a C++ client library (bound to the C library).
- Added a Python client library (bound to the C library).
- Added CMake build scripts to allow the library and clients (not the broker)
  to be compiled natively on Windows.

0.7 - 20100615
==============

- mosquitto_pub can now send null (zero length) messages.
- Don't store QoS=0 messages for disconnected clients with subscriptions of
  QoS>0.
- accept() all available sockets when new clients are connecting, rather than
  just one.
- Add option to print debug messages in pub and sub clients.
- hg revision is now exported via $SYS/broker/changeset
- Send Will when client exceeds keepalive timer and is disconnected.
- Check to see if a client has a will before sending it.
- Correctly deal with clients connecting with the same id multiple times.
- Add compile time option to disable heap memory tracking.
- Use poll() instead of select() to allow >1024 clients.
- Implement max_connections.
- Run VACUUM on in-memory database on receiving SIGUSR2.
- Fix bridge keepalive timeouts and reconnects.
- Don't attempt to drop root privileges when running on Windows as this isn't
  well supported (bug #586231).

0.6.1 - 20100506
================

- Fix DB auto upgrade for messages table.

0.6 - 20100505
==============

- Basic support for connecting multiple MQTT brokers together (bridging).
- mosquitto_sub can now subscribe to multiple topics (limited to a global QoS).
- mosquitto_pub can now send a file as a message.
- mosquitto_pub can now read all of stdin and send it as a message.
- mosquitto_pub can now read stdin and send each line as a message.
- mosquitto will now correctly run VACUUM on the persistent database on exit.
- Implement a more efficient database design, so that only one copy of each
  message is held in the database, rather than one per subscribed client.
- Add the store_cleanup_interval config option for dealing with the internal
  message store.
- Add support for disabling "clean session" for the sub client.
- Add support for automatic upgrading of the mosquitto DB from v1 to v2.
- Add persistence_file config option to allow changing the filename of the
  persistence database. This allows multiple mosquitto DBs to be stored in the
  same location whilst keeping persistence_location compatible with rsmb.
- Don't store QoS=0 messages for disconnected clients. Fixes bug #572608. This
  wasn't correctly fixed in version 0.5.
- Don't disconnect clients if they send a PUBLISH with zero length payload
  (bug #573610).
- If a retained message is received with a zero length payload, the retained
  message for that topic is deleted.
- Send through zero length messages.
- Produce a warning on unsupported rsmb options instead of quitting.
- Describe clean session flag in the mqtt man page.
- Implement the max_inflight_messages and max_queued_messages features in the
  broker.

0.5.4 - 20100311
================

- Fix memory allocation in mqtt3_fix_sub_topic() (bug #531861).
- Remove accidental limit of 100 client connections.
- Fix mosquitto_pub handling of messages with QoS>0 (bug #537061).

0.5.3 - 20100303
================

- Will messages are now only sent when a client disconnects unexpectedly.
- Fix all incoming topics/subscriptions that start with a / or contain
  multiple / in a row (//).
- Do actually disconnect client when it sends an empty subscription/topic string.
- Add missing $SYS/broker/clients/total to man page.

0.5.2 - 20100302
================

- Always update last backup time, so that the backup doesn't run every time
  through the main loop once autosave_interval has been reached.
- Report $SYS/broker/uptime in the same format as rsmb.
- Make mandatory options obvious in usage output and man page of mosquitto_pub.
  Fixes bug #529990.
- Treat subscriptions with a trailing slash correctly. This should fix bugs
  #530369 and #530099.
3146

R
Roger Light 已提交
3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220
0.5.1 - 20100227
================

- Must daemonise before pid file is written.

0.5 - 20100227
==============

- No longer store QoS=0 messages for disconnected clients that do not have
  clean start set.
- Rename msg_timeout option to retry_interval for better rsmb compatibility.
- Change persistence behaviour. The database is now stored in memory even if
  persistence is enabled. It is written to disk when mosquitto exits and also at
  periodic intervals as defined by the new autosave_interval option.
- The writing of the persistence database may be forced by sending mosquitto
  the SIGUSR1 signal.
- Clients that do not send CONNECT as their first command are now
  disconnected.
- Boolean configuration values may now be specified with true/false as well as
  1/0.
- Log message on CONNECT with invalid protocol or protocol version.
- Default sqlite3-pcre path on Linux is now /usr/lib/sqlite3/pcre.so to match
  future sqlite3-pcre packages.
- Add mosquitto_sub and mosquitto_pub, simple clients for subscribe/publish.
- Add man pages for clients.
- Add general man page on mqtt.
- Root privileges are now dropped only after attempting to write a pid file
  (if configured). This means that the pid file can be written to /var/run/
  directly and should fix bug #523183.

0.4.2 - 20100203
================

- Fix segfault on client connect with invalid protocol name/version.

0.4.1 - 20100112
===============

- Fix regex used for finding retained messages to send on new subscription.

0.4 - 20100105
==============

- Added support for wildcard subscriptions using + and #.
- All network operations are now non-blocking and can cope with partial
  packets, meaning that networking should be a lot more reliable.
- Total messsages/bytes sent/received are now available in $SYS.
- Improved logging information - use client ip address and id instead of
  socket number.
- Broker build timestamp is available in $SYS.
- Keepalive==0 is now correctly treated as "never disconnect".
- Fixed manpage installation.
- Fixed incorrect $SYS hierarchy locations in documentation and code.
- Debug type log messages are no longer sent to "topics".
- Default logging destination no longer includes "topics" to prevent possible
  error logging to the db before it is initialised.
- Periodic $SYS messages can now be disabled.
- stdout and stderr are flushed when logging to them to give more timely
  updates.
- dup is now set correctly when resending messages.
- Database format bumped due to topic column naming fix.

0.3 - 20091217
==============

- The port option in the configuration file and --port command line argument
  may now be given any number of times to make mosquitto listen on multiple
  sockets.
- Add new config file and command line option "interface" to specify an
  interface to listen on, rather than all interfaces.
- Added host access control through tcp-wrappers support.
- Set SO_REUSEADDR on the listening socket so restart is much quicker.
- Added support for tracking current heap memory usage - this is published on
  the topic "$SYS/broker/heap/current size"
3221
- Added code for logging to stderr, stdout, syslog and topics.
R
Roger Light 已提交
3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243
- Added logging to numerous places - still plenty of scope for more.

0.2 - 20091204
==============

- Replaced the command line option --foreground with --daemon, swapping the
  default behaviour.
- Added the command line option --config-file, to specify a config file to
  load.  If this is not given, no config file is load and the default options
  are used.
- Added the command line option --port for specifying the port to listen on.
  This overrides values in the config file.
- Don't use persistence by default.
- Default behaviour is now more sane when run by a normal user with no command
  line options (combination of above changes).
- Added option user to config file, defaulting to a value of mosquitto. If
  this value isn't blank and mosquitto is started by root, then it will drop
  privileges by changing to the user and its primary group. This replaces the
  current behaviour of refusing to start if run by root.
- Fix non-persistent mode, which would never work in the previous release.
- Added information on default values of msg_timeout and sys_interval to the
  mosquitto.conf man page. (closes bug #492045).