File: ChangeLog.txt

package info (click to toggle)
mosquitto 1.6.12-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye, sid
  • size: 4,956 kB
  • sloc: ansic: 38,243; python: 10,635; xml: 5,601; cpp: 1,529; makefile: 1,374; sh: 208; perl: 70
file content (2463 lines) | stat: -rw-r--r-- 104,293 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
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
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
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
2240
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
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.

Broker:
- Build warning fixes when building with WITH_BRIDGE=no and WITH_TLS=no.

Clients:
- All clients exit with an error exit code on CONNACK failure. Closes #1778.
- Don't busy loop with `mosquitto_pub -l` on a slow connection.


1.6.11 - 2020-08-11
===================

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

Broker:
- Fix usage message only mentioning v3.1.1. Closes #1713.
- Fix broker refusing to start if only websockets listeners were defined.
  Closes #1740.
- 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.
- Fix bridge topic remapping when using "" as the topic. Closes #1749.
- Fix messages being queued for disconnected bridges when clean start was
  set to true. Closes #1729.
- Fix `autosave_interval` not being triggered by messages being delivered.
  Closes #1726.
- Fix websockets clients sometimes not being disconnected promptly.
  Closes #1718.
- Fix "slow" file based logging by switching to line based buffering.
  Closes #1689. Closes #1741.
- Log protocol error message where appropriate from a bad UNSUBSCRIBE, rather
  than the generic "socket error".
- Don't try to start DLT logging if DLT unavailable, to avoid a long delay
  when shutting down the broker. Closes #1735.
- Fix potential memory leaks. Closes #1773. Closes #1774.
- Fix clients not receiving messages after a previous client with the same
  client ID and positive will delay interval quit. Closes #1752.
- Fix overly broad HAVE_PTHREAD_CANCEL compile guard. Closes #1547.

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


1.6.10 - 2020-05-25
===================

Broker:
- Report invalid bridge prefix+pattern combinations at config parsing time
  rather than letting the bridge fail later. Issue #1635.
- Fix `mosquitto_passwd -b` not updating passwords for existing users
  correctly. Creating a new user with `-b` worked without problem.
  Closes #1664.
- Fix memory leak when connecting clients rejected.
- Don't disconnect clients that are already disconnected. This prevents the
  session expiry being extended on SIGHUP. Closes #1521.
- Fix support for openssl 3.0.
- Fix check when loading persistence file of a different version than the
  native version. Closes #1684.
- Fix possible assert crash associated with bridge reconnecting when compiled
  without epoll support. Closes #1700.
 
Client library:
- Don't treat an unexpected PUBACK, PUBREL, or PUBCOMP as a fatal error.
  Issue #1629.
- Fix support for openssl 3.0.
- Fix memory leaks from multiple calls to
  `mosquitto_lib_init()`/`mosquitto_lib_cleanup()`. Closes #1691.
- Fix documentation on return code of `mosquitto_lib_init()` for Windows.
  Closes #1690.

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

Build:
- Various fixes for building with <C99 support. Closes #1622.
- Fix use of sed on BSD. Closes #1614.


1.6.9 - 20200227
================

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

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

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


1.6.8 - 20191128
================

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

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

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

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

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

1.6.7 - 20190925
================

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

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

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


1.6.6 - 20190917
================

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

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


1.6.5 - 20190912
================

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

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

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

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


1.6.4 - 20190801
================

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

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

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

Other:
- Various documentation fixes.


1.6.3 - 20190618
================

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

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

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

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

Build:
- CLIENT_LDFLAGS now uses LDFLAGS. Closes #1294.


1.6.2 - 20190430
================

Broker:
- 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.
- Fix build for WITH_TLS=no. Closes #1250.
- Fix Will message not allowing user-property properties.
- Fix broker originated messages (e.g. $SYS/broker/version) not being
  published when `check_retain_source` set to true. Closes #1245.
- Fix $SYS/broker/version being incorrectly expired after 60 seconds.
  Closes #1245.

Library:
- 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.

Clients:
- Fix -L url parsing. Closes #1248.


1.6.1 - 20190426
================

Broker:
- Document `memory_limit` option.

Clients:
- Fix compilation on non glibc systems due to missing sys/time.h header.

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


1.6 - 20190417
==============

Broker features:
- 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.
- General performance improvements.
- Add max_keepalive option, to allow a maximum keepalive value to be set for
  MQTT v5 clients only.
- 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.
- Add improved bridge restart interval based on Decorrelated Jitter.
- Add `dhparamfile` option, to allow DH parameters to be loaded for Ephemeral
  DH support
- Disallow writing to $ topics where appropriate.
- Fix mosquitto_passwd crashing on corrupt password file. Closes #1207.
- 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.

Client library features:
- Add support for MQTT v5
- Add mosquitto_subscribe_multiple() for sending subscriptions to multiple
  topics in one command.
- Add TLS Engine support.
- Add explicit support for TLS v1.3.
- Drop support for TLS v1.0.
- QoS 1 and 2 flow control improvements.

Client features:
- Add support for MQTT v5
- Add mosquitto_rr client, which can be used for "request-response" messaging,
  by sending a request message and awaiting a response.
- Add TLS Engine support.
- Add support for ALPN on TLS connections. Closes #924.
- Add -D option for all clients to specify MQTT v5 properties.
- 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.
- Add --remove-retained to mosquitto_sub, which can be used to clear retained
  messages on a broker.
- Add --repeat and --repeat-delay to mosquitto_pub, which can be used to
  repeat single message publishes at a regular interval.
- -V now accepts `5, `311`, `31`, as well as `mqttv5` etc.
- Add explicit support for TLS v1.3.
- Drop support for TLS v1.0.

Broker fixes:
- Improve error reporting when creating listeners.
- Fix build on SmartOS due to missing IPV6_V6ONLY. Closes #1212.

Client library fixes
- Add missing `mosquitto_userdata()` function.

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


1.5.8 - 20190228
================

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.
- Make error messages for missing config file clearer.
- Fix some Coverity Scan reported errors that could occur when the broker was
  already failing to start.
- Fix broken mosquitto_passwd on FreeBSD. Closes #1032.
- Fix delayed bridge local subscriptions causing missing messages.
  Closes #1174.

Library:
- Use higher resolution timer for random initialisation of client id
  generation. Closes #1177.
- Fix some Coverity Scan reported errors that could occur when the library was
  already quitting.


1.5.7 - 20190213
================

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

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.

Build:
- Don't require C99 compiler.
- Add rewritten build test script and remove some build warnings.


1.5.6 - 20190206
================

Security:
- CVE-2018-12551: If Mosquitto is configured to use a password file for
  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.
- CVE-2018-12550: If an ACL file is empty, or has only blank lines or
  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.
- CVE-2018-12546. If a client publishes a retained message to a topic that
  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.

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

Library:
- Fix TLS connections not working over SOCKS.
- 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.

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


1.5.5 - 20181211
================

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.
  This is now tracked as CVE-2018-20145.

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.
- 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.
- Fix outgoing retained messages not being sent by bridges on initial
  connection. Closes #1040.
- Don't reload auth_opt_ options on reload, to match the behaviour of the
  other plugin options. Closes #1068.
- Print message on error when installing/uninstalling as a Windows service.
- All non-error connect/disconnect messages are controlled by the
  `connection_messages` option. Closes #772. Closes #613. Closes #537.

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

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

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


1.5.4 - 20181108
================

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.

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.
- $SYS/broker/clients/disconnected should never be negative. Closes #287.
- Give better error message if a client sends a password without a username.
  Closes #1015.
- Fix bridge not honoring restart_timeout. Closes #1019.
- Don't disconnect a client if an auth plugin denies access to SUBSCRIBE.
  Closes #1016.

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

Build:
- Fix clients not being compiled with threading support when using CMake.
  Closes #983.
- 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.


1.5.3 - 20180925
================

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.

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

Build:
- Various fixes to ease building.


1.5.2 - 20180919
================

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

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

Build:
- Make it easier to build without bundled uthash.h using "WITH_BUNDLED_DEPS=no".
- Fix build with OPENSSL_NO_ENGINE. Closes #932.


1.5.1 - 20180816
================

Broker:
- Fix plugin cleanup function not being called on exit of the broker.
  Closes #900.
- Print more OpenSSL errors when loading certificates/keys fail.
- Use AF_UNSPEC etc. instead of PF_UNSPEC to comply with POSIX. Closes #863.
- 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.
- Fix IPv6 addresses not being able to be used as bridge addresses.
  Closes #886.
- All clients now time out if they exceed their keepalive*1.5, rather than
  just reach it. This was inconsistent in two places.
- Fix segfault on startup if bridge CA certificates could not be read.
  Closes #851.
- Fix problem opening listeners on Pi caused by unsigned char being default.
  Found via #849.
- ACL patterns that do not contain either %c or %u now produce a warning in
  the log. Closes #209.
- Fix bridge publishing failing when per_listener_settings was true. Closes
  #860.
- Fix `use_identity_as_username true` not working. Closes #833.
- Fix UNSUBACK messages not being logged. Closes #903.
- Fix possible endian issue when reading the `memory_limit` option.
- Fix building for libwebsockets < 1.6.
- Fix accessor functions for username and client id when used in plugin auth
  check.

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.
- Fix connection problems when mosquitto_loop_start() was called before
  mosquitto_connect_async(). Closes #848.

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

Build:
- Fixes for building on NetBSD. Closes #258.
- Fixes for building on FreeBSD.
- Add support for compiling with static libwebsockets library.


1.5 - 20180502
==============

Security:
- Fix memory leak that could be caused by a malicious CONNECT packet. This
  does not yet have a CVE assigned. Closes #533493 (on Eclipse bugtracker)

Broker features:
- Add per_listener_settings to allow authentication and access control to be
  per listener.
- 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.
- Add ability to deny access to SUBSCRIBE messages as well as the current
  read/write accesses. Currently for auth plugins only.
- Reduce calls to malloc through the use of UHPA.
- 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.
- 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.
- Change sys tree printing output. This format shouldn't be relied upon and
  may change at any time. Closes #470246.
- Minimum supported libwebsockets version is now 1.3.
- Add systemd startup notification and services. Closes #471053.
- Reduce unnecessary malloc and memcpy when receiving a message and storing
  it. Closes #470258.
- Support for Windows XP has been dropped.
- Bridge connections now default to using MQTT v3.1.1.
- mosquitto_db_dump tool can now output some stats on clients.
- Perform utf-8 validation on incoming will, subscription and unsubscription
  topics.
- new $SYS/broker/store/messages/count (deprecates $SYS/broker/messages/stored)
- new $SYS/broker/store/messages/bytes
- max_queued_bytes feature to limit queues by real size rather than
  than just message count. Closes Eclipse #452919 or Github #100
- 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.
- queue_qos0_messages was not observing max_queued_** limits
- When using the include_dir configuration option sort the files
  alphabetically before loading them.  Closes #17.
- IPv6 is no longer disabled for websockets listeners.
- Remove all build timestamp information including $SYS/broker/timestamp.
  Close #651.
- Correctly handle incoming strings that contain a NULL byte. Closes #693.
- Use constant time memcmp for password comparisons.
- Fix incorrect PSK key being used if it had leading zeroes.
- Fix memory leak if a client provided a username/password for a listener with
  use_identity_as_username configured.
- Fix use_identity_as_username not working on websockets clients.
- Don't crash if an auth plugin returns MOSQ_ERR_AUTH for a username check on
  a websockets client. Closes #490.
- Fix 08-ssl-bridge.py test when using async dns lookups. Closes #507.
- Lines in the config file are no longer limited to 1024 characters long.
  Closes #652.
- Fix $SYS counters of messages and bytes sent when message is sent over
  a Websockets. Closes #250.
- Fix upgrade_outgoing_qos for retained message. Closes #534.
- Fix CONNACK message not being sent for unauthorised connect on websockets.
  Closes #8.
- Maximum connections on Windows increased to 2048.
- When a client with an in-use client-id connects, if the old client has a
  will, send the will message. Closes #26.
- Fix parsing of configuration options that end with a space. Closes #804.

Client library features:
- Outgoing messages with QoS>1 are no longer retried after a timeout period.
  Messages will be retried when a client reconnects.
- DNS-SRV support is now disabled by default.
- Add mosquitto_subscribe_simple() This is a helper function to make
  retrieving messages from a broker very straightforward. Examples of its use
  are in examples/subscribe_simple.
- 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.
- Connections now default to using MQTT v3.1.1.
- 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.
- Add mosquitto_userdata function to allow retrieving the client userdata
  member variable. Closes #111.
- 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.
- 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.
- 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.

Client library fixes:
- Fix incorrect PSK key being used if it had leading zeroes.
- Initialise "result" variable as soon as possible in
  mosquitto_topic_matches_sub. Closes #654.
- No need to close socket again if setting non-blocking failed. Closes #649.
- Fix mosquitto_topic_matches_sub() not correctly matching foo/bar against
  foo/+/#. Closes #670.
- SNI host support added.

Client features:
- Add -F to mosquitto_sub to allow the user to choose the output format.
- Add -U to mosquitto_sub for unsubscribing from topics.
- Add -c (clean session) to mosquitto_pub.
- Add --retained-only to mosquitto_sub to exit after receiving all retained
  messages.
- Add -W to allow mosquitto_sub to stop processing incoming messages after a
  timeout.
- Connections now default to using MQTT v3.1.1.
- Default to using port 8883 when using TLS.
- mosquitto_sub doesn't continue to keep connecting if CONNACK tells it the
  connection was refused.

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

Build:
- Add WITH_STRIP option (defaulting to "no") that when set to "yes" will strip
  executables and shared libraries when installing.
- Add WITH_STATIC_LIBRARIES (defaulting to "no") that when set to "yes" will
  build and install static versions of the client libraries.
- Don't run TLS-PSK tests if TLS-PSK disabled at compile time. Closes #636.
- Support for openssl versions 1.0.0 and 1.0.1 has been removed as these are
  no longer supported by openssl.

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

1.4.15 - 20180228
=================

Security:
- Fix CVE-2017-7652. If a SIGHUP is sent to the broker when there are no more
  file descriptors, then opening the configuration file will fail and security
  settings will be set back to their default values.
- Fix CVE-2017-7651. Unauthenticated clients can cause excessive memory use by
  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.

Broker:
- Use constant time memcmp for password comparisons.
- Fix incorrect PSK key being used if it had leading zeroes.
- Fix memory leak if a client provided a username/password for a listener with
  use_identity_as_username configured.
- Fix use_identity_as_username not working on websockets clients.
- Don't crash if an auth plugin returns MOSQ_ERR_AUTH for a username check on
  a websockets client. Closes #490.
- Fix 08-ssl-bridge.py test when using async dns lookups. Closes #507.
- Lines in the config file are no longer limited to 1024 characters long.
  Closes #652.
- Fix $SYS counters of messages and bytes sent when message is sent over
  a Websockets. Closes #250.
- Fix upgrade_outgoing_qos for retained message. Closes #534.
- Fix CONNACK message not being sent for unauthorised connect on websockets.
  Closes #8.

Client library:
- Fix incorrect PSK key being used if it had leading zeroes.
- Initialise "result" variable as soon as possible in
  mosquitto_topic_matches_sub. Closes #654.
- No need to close socket again if setting non-blocking failed. Closes #649.
- Fix mosquitto_topic_matches_sub() not correctly matching foo/bar against
  foo/+/#. Closes #670.

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

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


1.4.14 - 20170710
=================

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


1.4.13 - 20170627
=================

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.

Broker:
- Fix for poor websockets performance.
- Fix lazy bridges not timing out for idle_timeout. Closes #417.
- Fix problems with large retained messages over websockets. Closes #427.
- Set persistence file to only be readable by owner, except on Windows. Closes
  #468.
- Fix CONNECT check for reserved=0, as per MQTT v3.1.1 check MQTT-3.1.2-3.
- When the broker stop, wills for any connected clients are now "sent". Closes
  #477.
- 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.
- Restrictions for CVE-2017-7650 have been relaxed - '/' is allowed in
  usernames/client ids. Remainder of fix for #462.

Clients:
- Don't use / in auto-generated client ids.


1.4.12 - 20170528
=================

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/

Broker:
- Fix mosquitto.db from becoming corrupted due to client messages being
  persisted with no stored message. Closes #424.
- Fix bridge not restarting properly. Closes #428.
- Fix unitialized memory in gets_quiet on Windows. Closes #426.
- Fix building with WITH_ADNS=no for systems that don't use glibc. Closes
  #415.
- Fixes to readme.md.
- Fix deprecation warning for OpenSSL 1.1. PR #416.
- Don't segfault on duplicate bridge names. Closes #446.
- Fix CVE-2017-7650.


1.4.11 - 20170220
=================

Broker:
- Fix crash when "lazy" type bridge attempts to reconnect. Closes #259.
- maximum_connections now applies to websockets listeners. Closes #271.
- Allow bridges to use TLS with IPv6.
- Don't error on zero length persistence files. Closes #316.
- For http only websockets clients, close files served over http in all cases
  when the client disconnects. Closes #354.
- Fix error message when websockets http_dir directory does not exist.
- Improve password utility error message. Closes #379.

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

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


1.4.10 - 20160816
=================

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

Client library:
- Support OpenSSL 1.1.0.
- Fixed the C++ library not allowing SOCKS support to be used. Closes #198.
- Fix memory leak when verifying a server certificate with a subjectAltName
  section. Closes #237.

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


1.4.9 - 20160603
================

Broker:
- Ensure websockets clients that previously connected with clean session set
  to false have their queued messages delivered immediately on reconnecting.
  Closes #476314.
- Reconnecting client with clean session set to false doesn't start with mid=1
  again.
- Will topic isn't truncated by one byte when using a mount_point any more.
- Network errors are printed correctly on Windows.
- Fix incorrect $SYS heap memory reporting when using ACLs.
- Bridge config parameters couldn't contain a space, this has been fixed.
  Closes #150.
- Fix saving of persistence messages that start with a '/'. Closes #151.
- Fix reconnecting for bridges that use TLS on Windows. Closes #154.
- Broker and bridges can now cope with unknown incoming PUBACK, PUBREC,
  PUBREL, PUBCOMP without disconnecting. Closes #57.
- Fix websockets listeners not being able to bind to an IP address. Closes
  #170.
- mosquitto_passwd utility now correctly deals with unknown command line
  arguments in all cases. Closes #169.
- Fix publishing of $SYS/broker/clients/maximum
- 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.
- 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.

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

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

Build:
- Fix string quoting in CMakeLists.txt. Closes #4.
- Fix building on Visual Studio 2015. Closes #136.


1.4.8 - 20160214
================

Broker:
- 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.
- Fix detection of broken connections on Windows. Closes #485143.
- Close stdin etc. when daemonised. Closes #485589.
- Fix incorrect detection of FreeBSD and OpenBSD. Closes #485131.

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.


1.4.7 - 20151221
================

Broker:
- Fix support for libwebsockets 1.22.


1.4.6 - 20151220
================

Broker:
- Add support for libwebsockets 1.6.

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

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


1.4.5 - 20151108
================

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

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


1.4.4 - 20150916
================

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


1.4.3 - 20150818
================

Broker:
- Fix incorrect bridge notification on initial connection. Closes #467096.
- Build fixes for OpenBSD.
- Fix incorrect behaviour for autosave_interval, most noticable for
  autosave_interval=1. Closes #465438.
- Fix handling of outgoing QoS>0 messages for bridges that could not be sent
  because the bridge connection was down.
- Free unused topic tree elements. Closes #468987.
- Fix some potential memory leaks. Closes #470253.
- Fix potential crash on libwebsockets error.

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

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


1.4.2 - 20150507
================

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

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.
- Fix CMake dependencies for C++ wrapper building. Closes #463884.
- 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.
- Fix calls to mosquitto_connect*_async() not completing.


1.4.1 - 20150403
================

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

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


1.4 - 20150218
==============

Important changes:
- Websockets support in the broker.
- 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.
- 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.
- New use_username_as_clientid option on the broker, for preventing hijacking
  of a client id.
- The client library and clients now have experimental SOCKS5 support.
- Wildcard TLS certificates are now supported for bridges and clients.
- The clients have support for config files with default options.
- Client and client libraries have support for MQTT v3.1.1.
- Bridge support for MQTT v3.1.1.


Broker:
- Websockets support in the broker.
- Add local_clientid, local_username, local_password for bridge connections to
  authenticate to the local broker.
- Default TLS mode now accepts TLS v1.2, v1.1 and v1.0.
- Support for ECDHE-ECDSA family ciphers.
- Fix bug #1324411, which could have had unexpected consequences for delayed
  messages in rare circumstances.
- Add support for "session present" in CONNACK messages for MQTT v3.1.1.
- Remove strict protocol #ifdefs.
- Change $SYS/broker/clients/active -> $SYS/broker/clients/connected
- Change $SYS/broker/clients/inactive -> $SYS/broker/clients/disconnected
- 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.
- 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.
- Anonymous clients are no longer accidently disconnected from the broker
  after a SIGHUP.
- mosquitto_passwd now supports -b (batch mode) to allow the password to be
  provided at the command line.
- Removed $SYS/broker/changeset. This was intended for use with debugging, but
  in practice is of no use.
- 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.
- 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.
- 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".
- 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.
- Wildcard TLS certificates are now supported for bridges.
- Support for "hour" client expiration lengths for the
  persistent_client_expiration option. Closes bug #425835.
- Bridge support for MQTT v3.1.1.
- 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.
- Usernames and topics given in ACL files can now include a space. Closes bug
  #431780.
- Fix hang if pattern acl contains a %u but an anonymous client connect.
  Closes bug #455402.
- Fix man page installation with cmake. Closes bug #458843.
- When using "log_dest file" the output file is now flushed periodically.

Clients:
- Both clients can now load default configuration options from a file.
- Add -C option to mosquitto_sub to allow the client to quit after receiving a
  certain count of messages. Closes bug #453850.
- Add --proxy SOCKS5 support for both clients.
- Pub client supports setting its keepalive. Closes bug #454852.
- Add support for config files with default options.
- Add support for MQTT v3.1.1.

Client library:
- Add experimental SOCKS5 support.
- mosquitto_loop_forever now quits after a fatal error, rather than blindly
  retrying.
- SRV support is now not compiled in by default.
- Wildcard TLS certificates are now supported.
- mosquittopp now has a virtual destructor. Closes bug #452915.
- Add support for MQTT v3.1.1.
- Don't quit mosquitto_loop_forever() if broker not available on first
  connect. Closes bug #453293, but requires more work.


1.3.5 - 20141008
================

Broker:
- Fix possible memory leak when using a topic that has a leading slash. Fixes
  bug #1360985.
- Fix saving persistent database on Windows.
- 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.
- When using -v and the broker receives a SIGHUP, verbose logging was being
  disabled. This has been fixed.

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

1.3.4 - 20140806
================

Broker:
- Don't ask client for certificate when require_certificate is false.
- Backout incomplete functionality that was incorrectly included in 1.3.2.

1.3.3 - 20140801
================

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

1.3.2 - 20140713
================

Broker:
- Don't allow access to clients when authenticating if a security plugin
  returns an application error. Fixes bug #1340782.
- Ensure that bridges verify certificates by default when using TLS.
- Fix possible crash when using pattern ACLs that do not include a %u and
  clients that connect without a username.
- Fix subscriptions being deleted when clients subscribed to a topic beginning
  with a $ but that is not $SYS.
- 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.
- Fix bug #1324411, which could have had unexpected consequences for delayed
  messages in rare circumstances.
- Anonymous clients are no longer accidently disconnected from the broker
  after a SIGHUP.

Client library:
- Fix topic matching edge case.
- Fix callback deadlocks after calling mosquitto_disconnect(), when using the
  threaded interfaces. Closes bug #1313725.
- Fix SRV support when building with CMake.
- Remove strict protocol #ifdefs.

General:
- Use $(STRIP) for stripping binaries when installing, to allow easier cross
  compilation.

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.
- Add mosquitto_threaded_set().

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.
- Possible memory leak fixes.
- 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
  libmosquitto.
- The Python library includes SSL/TLS support.
- The Python library should now be compatible with Python 3.

Other:

- Fix db_dump reading of retained messages.
- Add example of logging all messages to mysql.
- Add C++ client example.
- Fix potential buffer overflow in pub/sub clients.
- Add "make binary" target that doesn't make documents.
- Add "--help" arguments to pub/sub clients.
- Fix building on Solaris.

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
  by default).
- 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.
- Implement topic Access Control Lists.
- 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
  command when it should be UNSUBSCRIBE.
- 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.

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"
- Added code for logging to stderr, stdout, syslog and topics.
- 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).