Commit Graph

1301 Commits

Author SHA1 Message Date
Roger A. Light
762ad432e8 Fix support for openssl 3.0 2020-05-12 13:39:49 +01:00
Roger A. Light
e755827f4f Free outgoing client messages even for non-bridges. 2020-05-05 15:37:04 +01:00
Roger A. Light
ee7d1981ff Merge branch 'rfc-bridge-local-clean' of git://github.com/etactica/mosquitto into etactica-rfc-bridge-local-clean 2020-05-05 14:33:02 +01:00
Roger A. Light
d3247a830a Fix memory leak when connecting clients are rejected. 2020-05-05 14:31:13 +01:00
Roger A. Light
bfc82ea91a Fix incorrect check. 2020-05-05 13:13:24 +01:00
Roger A. Light
4960fc0702 Don't disconnect clients that are already disconnected.
This prevents the session expiry being extended on SIGHUP.

Closes #1521. Thanks to Christoph Krey.
2020-05-01 22:45:40 +01:00
Roger A. Light
c5d6f32341 Be more tolerant when loading persistence files. 2020-05-01 21:51:07 +01:00
Roger A. Light
eeaafed485 Fix memory leak when connecting clients rejected. 2020-04-30 17:31:13 +01:00
Roger A. Light
ff2b111cb3 Fix minor memory leak when load bridge prefixes. 2020-04-30 17:06:51 +01:00
Roger A. Light
4392320bc3 Fix memory leak when cleaning all shared subs. 2020-04-30 16:58:46 +01:00
Roger A. Light
ea47f6b0dc Clearer client disconnection message. 2020-04-28 10:42:49 +01:00
Roger A. Light
5908585afd Fix mosquitto_passwd -b not updating passwords for existing users
Closes #1664. Thanks to Leon Kiefer.
2020-04-26 22:44:57 +01:00
Roger A. Light
3758e0c328 Fix mosquitto_passwd not being able to create pwfile with -b. 2020-04-08 12:38:15 +01:00
Roger A. Light
cef9d891ae Tidy up main(). 2020-04-08 11:34:31 +01:00
Roger A. Light
c72dd39f92 Allow MQTT v5.0 outgoing bridges to fall back to MQTT v3.1.1
This applies if connecting to a v3.x only broker.
2020-04-02 10:26:36 +01:00
Roger A. Light
de25ff694e Report invalid bridge prefix+pattern combinations at config parsing time
Rather than letting the bridge fail later.

Issue #1635. Thanks to pokerazor.
2020-03-28 22:44:35 +00:00
Roger A. Light
4ab0f4bd39 Fix bundled deps option not being propagated to library.
Issue #1641.
2020-03-27 21:44:19 +00:00
Roger Light
986bf89f47 Prototype separate poll/epoll files. 2020-03-26 10:35:02 +00:00
Roger A. Light
c3e824ee22 Remove duplicate strlen() calls. 2020-03-26 09:32:01 +00:00
Roger A. Light
95faff36aa Fix ref counting of retained messages. 2020-03-26 09:11:50 +00:00
Roger A. Light
0b7b7389b0 Remove duplicate UTF-8 check
All strings are already validated in packet__read_string().
2020-03-26 09:09:11 +00:00
Karl Palsson
07d73c7e3a bridge: support bridge local clean session
This adds the ability to separating bridge clean session settings between
the local and remote endpoints.  Some broker implmentations refuse to allow
non-clean sessions, as they don't support storing messages to be sent to
the connecting broker.  However, this doesn't mean that the local
broker can't be queueing messages to send _out_ to the remote broker.

This PR adds a new bridge connection setting, local_cleansession, that
allows controlling this split. Naming is chosen to be local_ in keeping
with the other local_ settings for bridges.

A test for the six cases of queued/not queued messages in both
directions is added, but v5 testing is currently disabled.  The changes
to support the split are ~independent of protocol version.

Signed-off-by: Karl Palsson <karlp@etactica.com>
2020-03-20 12:35:06 +00:00
Michael
24e34434a4 Move SSL prepare and accept operations out of deep loop
Since all resources are ready, do not need lookup again.

Signed-off-by: Michael Liu <michael.liu.point@gmail.com>
2020-03-12 12:25:24 +00:00
Michael Liu
7953649b1c Fix potential memory leak.
WebSocket context may lost since db->ll_for_free = NULL; operation on the bottom of context__free_disused() function.

Signed-off-by: Michael Liu <michael.liu.point@gmail.com>
2020-03-12 12:09:00 +00:00
Roger A. Light
c84d175b3d Fixes for the poor souls stuck on <c99.
Closes #1622.
2020-03-12 10:29:11 +00:00
Roger A. Light
c175e836a7 Print openssl error when unable to load server key. 2020-03-05 10:54:13 +00:00
Roger A. Light
d96543c0b8 Merge branch 'fixes' into develop 2020-03-03 12:54:57 +00:00
Roger A. Light
b0a065f790 Update changelog. Release page. Bump copyright. 2020-02-27 23:26:58 +00:00
Roger A. Light
0c68c20d2b Fix mosquitto_client_protocol() returning incorrect values. 2020-02-27 15:01:41 +00:00
Roger A. Light
db02c9162d Add plugin that prints out calls, to help debugging. 2020-02-27 15:01:41 +00:00
Roger A. Light
032af6bf69 Add missing header 2020-02-27 15:01:41 +00:00
Roger A. Light
c4e41f3444 Back port db_dump from develop.
Closes #1519. Thanks to Christoph Krey.
2020-02-06 16:44:04 +00:00
Roger A. Light
2a8c1d03f5 Merge branch 'coverity-fixes' into fixes 2020-02-06 16:20:52 +00:00
Gianfranco Costamagna
078ad752cd cmake: add ADNS enable/disable dynamic support
Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
2020-02-06 15:24:09 +00:00
Gianfranco Costamagna
e9a7150031 Bugfix: enabling DLT was overriding everything else on linker flags because of error in cmake set keyword
Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
2020-02-06 15:21:40 +00:00
Roger A. Light
07c54627e9 Print OpenSSL errors in more situations
Covers when loading certificates fails, or there are ENGINE problems.

Closes #1552. Thanks to Michael Richardson.
2020-02-04 16:59:29 +00:00
Roger A. Light
27b4518d7e Improve password file parsing in the broker and mosqitto_passwd.
Closes #1584. Thanks to panava.
2020-02-04 16:38:51 +00:00
Roger A. Light
ed5db1bd6b Fix bind_interface not working for the default listener.
Closes #1533. Thanks to Markus Gothe.
2020-01-30 22:48:15 +00:00
Roger A. Light
e188a6b500 More whitespace trimming fixes/consolidation. 2020-01-30 22:26:13 +00:00
Roger A. Light
32969169f7 Trim whitespace from acl topics. 2020-01-30 19:55:55 +00:00
Roger A. Light
70fd600c3a Fix trailing whitespace not being trimmed on acl users.
Closes #1539. Thanks to CliveJL and LeonPoon.
2020-01-30 19:52:46 +00:00
Roger A. Light
9a0de5ef61 Free log_timestamp_format on exit.
Closes #1523. Thanks to Basavesh Shivakumar.
2020-01-30 16:19:10 +00:00
Roger A. Light
11ece604c4 Merge branch 'bugfix-MemLeak_in_handle_unsubscribe' of git://github.com/panava/mosquitto into panava-bugfix-MemLeak_in_handle_unsubscribe 2020-01-30 14:22:12 +00:00
Roger A. Light
3220790790 Merge branch 'bugfix-MemoryLeak_in_persist_read' of git://github.com/panava/mosquitto into panava-bugfix-MemoryLeak_in_persist_read 2020-01-30 12:40:16 +00:00
Roger A. Light
50735afb5b Fix for internal logging not printing. 2020-01-29 16:25:56 +00:00
Panagiotis Vasilikos
618413e1d2 Resource leak in persist_read.c
Reason: In lines 435 and 439, the function returns without calling closing
fptr which was opened at line 399.

Fix: I added fclose(fptr) statements before each of the returns.
Signed-off-by: Panagiotis Vasilikos <panagiotis.vasilikos@alexandra.dk>
2020-01-29 13:30:24 +01:00
Roger A. Light
9ae38788dc Fix config->user not being freed on exit.
Closes #1564. Thanks to back1127.
2020-01-28 16:52:14 +00:00
Roger A. Light
812c0636d5 Satisfy valgrind when exiting on error.
This is when due to not being able to open a listening socket, solved by
calling freeaddrinfo in the error cases.

Closes #1565. Thanks to back1127.
2020-01-28 16:12:45 +00:00
Roger A. Light
e7c9f009bd Strip whitespace from end of config file string options.
Closes #1566. Thanks to kollokollo.
2020-01-28 16:04:25 +00:00
Panagiotis Vasilikos
49bf788862 Memory leak in handle_unsubscribe.c
Reason: In line 70, the memory allocation for the pointer reasons_codes may
result to a memory leak due to the many returns (e.g as the one in line 78)
occuring in the program's path until reaching the mosquitto__free at line 122.

Fix: I added a mosquitto__free(reason_codes) statement before each return
statement that could result to a memory leak

Signed-off-by: Panagiotis Vasilikos <panagiotis.vasilikos@alexandra.dk>
2020-01-28 16:31:15 +01:00
Panagiotis Vasilikos
0f7052564c Memory leak in handle_unsubscribe.c
Reason: In line 70, the memory allocation for the pointer reasons_codes may
result to a memory leak due to the many returns (e.g as the one in line 78)
occuring in the program's path until reaching the mosquitto__free at line 122.

Fix: I moved the memory allocation code block (lines 69-73) just before
the line 102. This is the first place the pointer reason_codes is used, while
the following mosquitto__free operators free the allocated memory correctly.

Signed-off-by: Panagiotis Vasilikos <panagiotis.vasilikos@alexandra.dk>
2020-01-24 16:34:56 +01:00
Roger A. Light
5528dde56a Fix possible null dereferences. 2020-01-23 12:51:12 +00:00
Roger A. Light
05ec02b3f3 Remove dead values. 2020-01-23 10:55:49 +00:00
Roger A. Light
18f0508a6e Fix dereference before null check.
Coverity Scan 1405815.
2020-01-23 10:08:26 +00:00
Roger A. Light
db62f9843f Fix unused value being overwritten.
Coverity Scan 1400727.
2020-01-23 09:35:28 +00:00
Roger A. Light
d452ea138b Use presence of password file as indicator for authentication checks.
Previously, authentication checks would only take place if usernames
were defined in the password file.

Closes #1545. Thanks to Timothy Godfrey.
2019-12-20 00:19:17 +00:00
Roger A. Light
b6119bb759 Check ACL patterns for validity when loading.
Closes #1539. Thanks to Leon Poon.
2019-12-18 21:39:27 +00:00
Roger A. Light
e5561cd09e Fix db_dump compilation.
Closes #1520.
2019-12-12 16:54:23 +00:00
Roger A. Light
c8789180f3 Fix session expiry with very large expiry intervals.
Closes #1525. Thanks to Christoph Krey.
2019-12-12 09:40:37 +00:00
Roger A. Light
8a6f179c83 Fix comment. 2019-12-11 15:15:40 +00:00
Roger A. Light
3f0c202aa5 Reduce heap allocation churn when tokenising topics. 2019-12-11 13:23:59 +00:00
Roger A. Light
c0443637e8 Merge branch 'master'
Conflicts:
	ChangeLog.txt
	config.mk
	src/context.c
	src/loop.c
	src/subs.c
	test/broker/01-connect-bad-packet.py
	test/broker/02-subpub-qos1-bad-pubcomp.py
	test/broker/02-subpub-qos1-bad-pubrec.py
	test/broker/02-subpub-qos2-bad-puback-1.py
	test/broker/02-subpub-qos2-bad-puback-2.py
	test/broker/02-subpub-qos2-bad-pubcomp.py
	test/broker/02-subpub-qos2.py
	test/broker/07-will-null-topic.py
2019-12-03 13:59:05 +00:00
Roger A. Light
6dec2b468b Remove redundant expiry checks
This is all now handled in session_expiry.c, through session expiry interval/time.
2019-11-28 16:19:57 +00:00
Roger A. Light
a46b45b006 Fix persistent_client_expiration not being used
Closes #1494. Thanks to Christoph Krey.
2019-11-28 16:17:41 +00:00
Roger Light
d92360dd8e Split sub and retain trees. 2019-11-22 14:07:15 +00:00
Roger A. Light
d003fed383 MQTT v5 bridges can handle "retain-available" being false. 2019-11-07 13:31:42 +00:00
Roger A. Light
2af260ba58 Add bridge_outgoing_retain option
This allows outgoing messages from a bridge to have the retain bit
completely disabled, which is useful when bridging to e.g. Amazon or
Google.
2019-11-07 11:59:29 +00:00
Roger A. Light
05171b266d Fix TLS Websockets clients not receiving messages.
This can occurs after one client takes over a previous connection.

Closes #1489. Thanks to Bas Verhoeven.
2019-11-06 22:25:33 +00:00
Roger A. Light
b622aaeee4 Fix messages with an expiry interval missing the property.
They would be be sent without an expiry interval property just before
they were expired.

Closes #1464. Thanks to Dustin Sallings.
2019-10-31 12:56:13 +00:00
Roger A. Light
06a27e799f Fix retained messages with an expiry interval not being expired.
This happened after being restored from persistence.

Closes #1464. Thanks to Dustin Sallings.
2019-10-31 12:54:20 +00:00
Roger A. Light
d49988fa6f Rejig unix socket support. 2019-10-30 21:48:53 +00:00
Roger A. Light
253326dcc9 Fix problems with reloading config when per_listener_settings was true.
Closes #1459. Thanks to Thomas Markin Klein.
2019-10-15 15:32:24 +01:00
Roger A. Light
b660283e64 Basic MQTT v5 support for bridges.
This gives equivalent behaviour as for v3.1.1/v3.1 bridges, there is no extra functionality yet.
2019-10-09 10:54:44 +01:00
Roger A. Light
847c3f1f8b Move bridge on connect code to bridge.c. 2019-10-09 10:51:42 +01:00
Roger A. Light
1ab19f2b3d Make error messages clearer when bridge misconfigured 2019-10-09 10:06:31 +01:00
Roger A. Light
17c32d89d9 Restrict access to unix socket. 2019-10-09 09:55:11 +01:00
Roger A. Light
43a692dfbe Add new files to cmakelists. 2019-10-08 20:56:56 +01:00
Roger A. Light
499e2f2e98 Add support for unix sockets to broker, lib, and clients. 2019-10-08 20:55:31 +01:00
Roger A. Light
fad184c9c2 Bridge remapping refactoring and tests. 2019-10-03 16:46:15 +01:00
Roger A. Light
8463c33720 Refactor property remaining length calculation. 2019-10-03 10:36:24 +01:00
Roger A. Light
cfacd961c9 Only a single CRL could be loaded at once. This has been fixed.
Closes #1442. Thanks to charlemagnelasse.
2019-10-02 13:37:52 +01:00
Roger A. Light
c471dfb201 Fix sub topics being limited to 200 chars instead of 200 levels
Closes #1441. Thanks to Christoph Krey.
2019-10-02 13:00:01 +01:00
Roger A. Light
b942b73b6d Fix incorrect memory tracking causing problems with memory_limit option.
Closes #1437. Thanks to Guillaume Bour.
2019-10-01 16:57:54 +01:00
Roger A. Light
4db1e80410 More allow_zero_length_clientid fixes.
Closes #1429. Thanks to Dustin Sallings.
2019-09-26 11:53:58 +01:00
Roger A. Light
539c1b9bcb Tests for zero length client id, plus fix for one case where it was allowed 2019-09-26 11:14:52 +01:00
Roger A. Light
54ed3c0fc9 Merge branch 'master' into develop 2019-09-25 19:09:10 +01:00
Roger A. Light
6a01453ce0 Build fixes. 2019-09-25 12:17:17 +01:00
Roger A. Light
9584463c75 Fix potential crash when reloading config.
Closes #1424, #1425. Thanks to JinPingChng and peteakalad.
2019-09-25 11:24:47 +01:00
Roger A. Light
1a8c44b84f Fix regression on use of mosquitto_connect_async() not working.
Closes #1415 and #1422. Thanks to Karl Palsson, Till Zimmermann and Liam Fry.
2019-09-24 20:15:04 +01:00
Roger A. Light
096380fbdc Add workaround for libwebsockets 3.2.0. 2019-09-24 10:21:51 +01:00
Roger A. Light
2fd7f5270a mosquitto_passwd returns 1 on an error condition
When attempting to update a user that does not exist.

Closes #1414. Thanks to kdgde.
2019-09-17 09:37:16 +01:00
Roger A. Light
1066750931 Restrict topic hierarchy to 200 levels to prevent possible stack overflow.
Closes #1412. Thanks to Ryan Shaw.
2019-09-15 22:57:36 +01:00
Roger A. Light
0a0ad4cd6c Fix for old libwebsockets versions. 2019-09-12 17:15:46 +01:00
Roger A. Light
ce68040f22 Refuse to compile with lws 3.2.0. 2019-09-12 14:44:27 +01:00
Roger A. Light
8f6ac1b64a Fix for websockets regression. 2019-09-12 13:31:01 +01:00
Roger A. Light
5941291bd5 Fix build WITH_TLS=no 2019-09-11 16:16:38 +01:00
Roger A. Light
9ad5fe7d95 Fix repeated "Error in poll" messages on Windows.
This occurs when only websockets listeners are defined.

Closes #1391. Thanks to stopak.
2019-09-11 15:53:36 +01:00
Roger A. Light
4dc98c4cef Fix CRL file not being reloaded on HUP.
Closes #35.
2019-09-11 09:08:02 +01:00
Roger Light
31f09d1206
Merge pull request #1405 from woelfman/fix-engine-key-uri
Fix usage of tls_engine and tls_keyform.
2019-09-08 20:44:19 +01:00
Matt Woelfel
39803e538f Fix usage of tls_engine and tls_keyform.
The current implementation does not properly forward the engine
parameters to OpenSSL causing OpenSSL to incorrectly attempt to open the
engine key uri as a file.

Sponsored-by: Trimble, Inc.
Signed-off-by: Matt Woelfel <matt@woelfware.com>
2019-09-07 18:56:59 -05:00
Roger A. Light
034324c46d Fix websockets 3.2 causing slow connection on non-websockets listeners
Closes #1406. Thanks to pbrenna.
2019-09-07 21:45:56 +01:00
Roger A. Light
5fd92cbfbd Further fix for #1401. 2019-09-06 22:28:11 +01:00
Roger A. Light
3c35c6cdd9 Fix Will not being sent if will delay greater than session expiry.
Closes #1401. Thanks to Will Lisac.
2019-09-05 12:46:46 +01:00
Roger A. Light
f1516f86cb Improve error messages in some situations when clients disconnect.
Reduces the number of "Socket error on client X, disconnecting"
messages.
2019-09-05 12:31:52 +01:00
Roger A. Light
779c6cc234 Fix leak introduced in previous commit. 2019-09-05 12:10:04 +01:00
Roger A. Light
f6b22f8248 Fix clients using use_identity_as_* being disconnected on SIGHUP.
Closes #1402. Thanks to twegener-embertec.
2019-09-05 11:37:43 +01:00
Roger A. Light
4658dba6b3 Fix slow websockets performance when sending large messages.
Closes #1390. Thanks to aalibasic.
2019-08-29 14:12:58 +01:00
Roger A. Light
4c4ca38938 Fix support for libwebsockets 3.x. 2019-08-29 14:12:58 +01:00
YangHau
abfdc2f8a6 Remove useless if statement
If statement for detecting if a pointer is NULL
is totally unnecessary.

Signed-off-by: YangHau <vulxj0j8j8@gmail.com>
2019-08-16 02:04:52 +08:00
Roger A. Light
570c3674fb Drop privs to nobody if mosquitto user does not exist. 2019-08-07 10:42:03 +01:00
Roger A. Light
1c1ccaee52 Merge branch 'master' into develop 2019-08-06 15:04:36 +01:00
Roger A. Light
cbced051e7 Better check for printable db_dump payloads. 2019-08-06 13:24:06 +01:00
Roger A. Light
9c3e6b4ccc Remove debug printfs. 2019-08-06 13:18:39 +01:00
Roger A. Light
50695f8103 Fix v5 DISCONNECT packets with remaining length == 2.
These were being treated as a protocol error.

Closes #1367. Thanks to Frank Pagliughi.
2019-08-05 21:13:23 +01:00
Roger A. Light
c269e6f019 db_dump: Update for version 5 file format
Closes #1320. Thanks to Christoph Krey.
2019-08-01 15:49:25 +01:00
Roger Light
07d2504bf5
Merge pull request #1254 from ccvca/fix_passwd_len
Fix password input when MAX_BUFFER_LEN is not 1024 in mosquitto_passwd.c
2019-08-01 10:18:34 +01:00
Roger A. Light
efc8ed39af Fix incoming msgs not being removed when there are no subs
Fix incoming messages not being removed for a client if the topic being
published to does not have any subscribers.

Closes #1322. Thanks to Yannic Schröder.
2019-07-31 18:52:51 +01:00
Roger A. Light
696a9b8019 Fix incomgin QoS 2 with max_inflight_messages set to 1.
Closes #1332. Thanks to xmas79.
2019-07-30 23:25:12 +01:00
Roger A. Light
13ac1080a0 Refactoring bridge code
This separates out a good amount from the main loop code.
2019-07-11 14:43:32 +01:00
Roger A. Light
d17d7c9229 Fix persistent clients being incorrectly expired on Raspberry Pis.
Closes #1272. Thanks to BowenMarmot and addendumE.
2019-06-25 17:01:41 +01:00
Matevz Mihalic
0a5fbc403b
Fix plugin psk_key_get for v4
Signed-off-by: Matevz Mihalic <matevz.mihalic@gmail.com>
2019-06-17 13:00:27 +02:00
Roger A. Light
587debc013 Fix incoming/outgoing quota problems for QoS>0. 2019-05-31 22:44:34 +01:00
Roger A. Light
142d07f45a 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.
2019-05-29 16:19:18 +01:00
Roger A. Light
de695af8c0 Fix zero length client ids being rejected for MQTT v5 clients.
This was happening when clean start was set to true.
2019-05-29 16:07:45 +01:00
Roger A. Light
e51e40e95c Fix incorrect shared subscription topic of '$shared.' 2019-05-29 15:40:17 +01:00
Roger A. Light
b42bb99ba6 Disable TLS renegotiation.
Client initiated renegotiation is considered to be a potential attack
vector against servers.

Closes #1257. Thanks to Daniele Sluijters.
2019-05-29 11:47:18 +01:00
Roger Light
44d170053d
Merge pull request #1255 from etactica/ssl-fixes
Ssl fixes for ENGINE and UI includes
2019-05-29 10:34:11 +01:00
Roger A. Light
96d0a26902 Only add to disused if session expiry is 0. 2019-05-28 23:37:26 +01:00
Roger A. Light
5088202529 Fix persistent Websockets clients not receiving messages.
This occurs after they reconnect, having sent DISCONNECT
on a previous session.

Closes #1227. Thanks to usernametaken.
2019-05-28 22:13:22 +01:00
Roger A. Light
3dd8eb722b Colour internal logs for visibility. 2019-05-28 22:00:11 +01:00
Roger A. Light
00eee59ad9 Add 'extern "C"' on public headers.
mosquitto_broker.h and mosquitto_plugin.h

Thanks to Wolfgang Petroschka.

Closes #1290.
2019-05-23 11:03:09 +01:00
Roger A. Light
a900e3a1a7 Mention mosquitto_broker.h in mosquitto_plugin.h. 2019-05-22 16:49:04 +01:00
Roger A. Light
f974b91084 Consistent ref counting inc and dec functions. 2019-05-22 13:20:45 +01:00
Roger A. Light
b4dfeb3767 Fix MQTT v5 clients not being able to specify a password without a username.
Thanks to Erik Moqvist.

Closes #1274.
2019-05-21 23:56:22 +01:00
Roger A. Light
999c478c88 Fixes for bug #1273
* Fix Will message for a persistent client incorrectly being sent when the client reconnects after a clean disconnect.
* Fix Will message for a persistent client not being sent on disconnect.
* Fix mosquitto_pub not using the `-c` option.

Thanks to Yannic Schröder.

Closes #1273.
2019-05-21 17:08:52 +01:00
Roger A. Light
ef3e52d40b Fix default max_topic_alias listener config not being used.
This was not being copied to the in-use listener when compiled without
TLS support.
2019-05-16 14:03:39 +01:00
Roger A. Light
cd3877e628 Fix detection of incoming v3.1/v3.1.1 bridges.
Closes #1263. Thanks to vrst37.
2019-05-08 11:53:51 +01:00
Karl Palsson
22303848e2 ssl: support openssl with ENGINE support disabled.
Alternatively, just drop support for this config.

Signed-off-by: Karl Palsson <karlp@etactica.com>
2019-05-02 16:44:14 +00:00
Christian von Arnim
324ed6be76
Fix password input when MAX_BUFFER_LEN is not 1024 in mosquitto_passwd.c
Signed-off-by: Christian von Arnim <christian.vonarnim@gmail.com>
2019-05-01 09:56:55 +02:00
Roger A. Light
e742c1c2f1 Fix $SYS/broker/version being incorrectly expired after 60 seconds.
Close #1245. Thanks to Christoph Krey.
2019-04-30 13:25:56 +01:00
Roger A. Light
f64d3b1e5c Fix broker originated messages not being sent.
This occurred when `check_retain_source` was set to true.

Closes #1245. Thanks to Christoph Krey.
2019-04-30 13:25:54 +01:00
Roger A. Light
a9f17cea95 Fix Will message not allowing user-property properties. 2019-04-30 13:25:27 +01:00
Roger A. Light
eebdbc86c4 Fix access after free when v5 client with Will message disconnects.
The Will message has as its first property one of content-type,
correlation-data, payload-format-indicator, or response-topic.

Closes #1244. Thanks to Christoph Krey.
2019-04-30 13:21:05 +01:00
Roger A. Light
42fb2f5538 Fix build for WITH_TLS=no.
Closes #1250. Thanks to bmparr.
2019-04-29 22:56:22 +01:00
Roger A. Light
439575475c Use CMAKE_INSTALL_* variables when installing in CMake.
Closes #1049. Thanks to Greg Troxel.
2019-04-26 17:07:05 +01:00
Roger A. Light
efa649f451 Don't call ldconfig in CMake scripts.
Closes #1048. Thanks to Greg Troxel.
2019-04-26 17:07:02 +01:00
Roger A. Light
3b4a5419c3 Build fixes around CFLAGS et al.
- Split CFLAGS and CPPFLAGS, and LDFLAGS and LDADD/LIBADD.
- test/unit now respects CPPFLAGS and LDFLAGS.

Closes #1232. Thanks to Greg Troxel.
2019-04-26 17:06:54 +01:00
Roger A. Light
4dcd977932 Windows build fixes. 2019-04-17 20:09:59 +01:00
Roger A. Light
449103e960 Merge remote-tracking branch 'refs/remotes/origin/fixes'
Conflicts:
	ChangeLog.txt
2019-04-17 17:51:34 +01:00
Roger A. Light
3e6cb42a40 Fix minor Coverity issues
1400727 - unused value
1400726 - dereference after null check
1400728 - derefence before null check
2019-04-17 16:20:46 +01:00
Roger A. Light
689989cc56 Fix inflight quota inc/dec for both broker and library. 2019-04-17 16:15:41 +01:00
Roger A. Light
6438ce861e Minor build variant fixes. 2019-04-17 11:00:54 +01:00
Roger A. Light
32fde3885c Fix missing errors for websockets. 2019-04-17 09:43:38 +01:00
Roger A. Light
8531cb1d79 Separate broker message queues into in/out.
This allows and includes better flow control handling for QoS>0.
2019-04-17 09:29:34 +01:00
Roger A. Light
baf1909ffb Improve some messages when client disconnects. 2019-04-16 11:40:07 +01:00
Roger A. Light
fb1979c0ea Fix build on SmartOS due to missing IPV6_V6ONLY.
Thanks to Matt Ingenthron.

Closes #1212.
2019-04-11 21:26:29 +01:00
Roger Light
77aaec686e
Merge pull request #1224 from omenlabs/ALPN
Bridge TLS Application-Layer Protocol Negotiation
2019-04-11 11:08:15 +01:00
Roger A. Light
638ab2f969 Fix unexpected behaviour when reusing a mid after a publish is denied. 2019-04-10 22:33:31 +01:00
Roger A. Light
8a651ff6c3 Remove remnant from before the conversion to utlist. 2019-04-09 18:51:43 +01:00
Roger A. Light
ad3b7ec778 Fix Coverity Scan 1400486-1400487. Unused values. 2019-04-05 22:38:14 +01:00
Roger A. Light
0d3c7fe778 Fix Coverity 1302840. No effect comparison. 2019-04-05 22:18:20 +01:00
Roger A. Light
e4d0d52b01 Fix Coverity Scan 1400483-1400485.
Logically dead code.
2019-04-05 22:02:11 +01:00
John Hickey
c011be62a4 Bridge TLS Application-Layer Protocol Negotiation
In order to connect to brokers that support both websockets and
mqtt on the same port (such as Amazon IoT), we need to set an
application for the SSL context.  This change allows the specification
of an application by using the `bridge_alpn` configuration token.

Signed-off-by: John Hickey <jjh-github@daedalian.us>
2019-04-04 17:27:52 -07:00
Roger A. Light
2e7dcee342 Multistep auth, plus reauth, plus tests. 2019-04-04 22:08:55 +01:00
Roger A. Light
c1776a0b39 Add reauth parameter for extended auth. 2019-04-04 15:09:53 +01:00
Roger A. Light
0f6e51d582 Code and tests for returning single stage auth data back to client. 2019-04-04 14:36:03 +01:00
Roger A. Light
494f35bd8d Add mosquitto_set_username() plugin function. 2019-04-04 12:39:38 +01:00
Roger A. Light
a29a7dadc6 Basic plugin support for single step extended auth. 2019-04-04 11:37:04 +01:00
Roger A. Light
da84b9a983 Restrict what packets are allowed in what client state. 2019-04-03 20:46:21 +01:00
Roger A. Light
758e1edbe7 Handle error condition correctly. 2019-04-03 16:46:49 +01:00
Roger A. Light
fb8a2baaad Refactor client msgs to use utlist to reduce code complexity. 2019-04-03 14:13:12 +01:00
Roger A. Light
8097ec24f9 Fix some property leaks. 2019-04-03 11:23:31 +01:00
Roger A. Light
fe854d3a64 Refactor handle__connect() ahead of extended auth changes. 2019-04-03 10:50:19 +01:00
Roger A. Light
73cd44ac7f Move handle__disconnect() to its own file. 2019-04-02 10:56:17 +01:00
Roger A. Light
ec3fd361be https links where possible. 2019-03-30 20:34:40 +00:00
Roger A. Light
75c2a39d2c Send topic alias maximum from the broker. 2019-03-27 17:38:35 +00:00
Roger A. Light
12e5efbee2 Typo. 2019-03-26 22:20:04 +00:00
Roger A. Light
ea046c2405 Merge branch 'master' of git://github.com/LarsVoelker/mosquitto into LarsVoelker-master 2019-03-26 18:36:13 +00:00
Roger A. Light
834ffdf82b Fix Coverity Scan defect 1400435. 2019-03-26 14:22:25 +00:00
Roger A. Light
0ca093060c Fix Coverity Scan defect 1400433. Integer overflow. 2019-03-26 14:14:46 +00:00
Roger A. Light
9faad1e078 Fix a variety of scan-build warnings. 2019-03-26 14:00:42 +00:00
Roger A. Light
67707b819d Fix some -Wextra compiler warnings. 2019-03-26 12:15:34 +00:00
Roger A. Light
2a5995106a Fix Coverity Scan defect 140436. Null dereference. 2019-03-26 12:05:23 +00:00
Roger A. Light
87197bf9d4 Fix Coverity Scan defect 1400441, dereference of pointer after earlier null check. 2019-03-26 11:35:20 +00:00
Roger A. Light
42732f4cca Fix mosquitto_passwd segfault on corrupt file.
Thanks to srasku-ge.

Closes #1207
2019-03-26 10:03:17 +00:00
Roger A. Light
43c159b9a5 Support and tests for saving message expiry interval. 2019-03-25 23:17:57 +00:00
Roger A. Light
61fe26474e Test and fix for client message prop persistence. 2019-03-25 06:55:45 +00:00
Roger A. Light
5841da2c36 Tests for persisting message store properties. 2019-03-24 21:38:00 +00:00
Roger A. Light
efb20625fb Code and tests for persisting client msg properties. 2019-03-23 22:52:08 +00:00
Roger A. Light
c95ae6a6fd Remove one instance of recursion. 2019-03-23 08:08:15 +00:00
Roger A. Light
48253bc12c Persist message store publish properties. 2019-03-21 21:43:36 +00:00
Roger A. Light
2f15a7be2b Add subscription-identifier and options to persistence. 2019-03-21 14:19:48 +00:00
Roger A. Light
214a5f3aab v5 persistence file format
This includes changes to improve read/write performance.
It is not complete, and will have further changes to add properties and anything else required for MQTT v5.
2019-03-21 00:35:56 +00:00
Roger A. Light
a0e54ac065 Function for reading persist file chunk header. 2019-03-19 17:13:08 +00:00
Roger A. Light
ee5412b060 Persist write fix. 2019-03-19 17:02:51 +00:00
Roger A. Light
a50d129a3c Fix db_dump. 2019-03-19 16:42:47 +00:00
Roger A. Light
e249ca7e91 Separate the persistence actual writing functions. 2019-03-19 16:27:34 +00:00
Roger A. Light
7a53b28080 Start of persistence writing tests. 2019-03-19 16:27:34 +00:00
Roger A. Light
54a35ed0ed Free clients with >0 session expiry on exit. 2019-03-18 23:06:53 +00:00
Roger A. Light
94450eb8bc Keep log open until we are ready to quit. 2019-03-18 23:04:34 +00:00
Roger A. Light
8024a30d1d Fix potential leak. 2019-03-18 21:57:49 +00:00
Roger A. Light
c90bd4e0c6 Add helper function for internal debug logging. 2019-03-17 21:30:56 +00:00
Roger A. Light
b29c8ced55 Fix compilation warning for WITH_WEBSOCKETS=no. 2019-03-17 20:57:04 +00:00
Roger A. Light
ad2ce6c4e6 Add internal logging type, for development debugging. 2019-03-17 20:54:43 +00:00
Roger A. Light
c5699da5ce Don't remove unused websockets contexts until lws is finished with them. 2019-03-17 07:40:01 +00:00
Roger A. Light
0ced003880 Always remove from by_id when adding to disused list. 2019-03-16 10:29:24 +00:00
Roger A. Light
320ddc1303 Merge branch 'master'
Conflicts:
	CMakeLists.txt
	ChangeLog.txt
	client/Makefile
	config.mk
	installer/mosquitto.nsi
	installer/mosquitto64.nsi
	lib/mosquitto.h
	lib/mqtt3_protocol.h
	lib/util_mosq.c
	set-version.sh
	snap/snapcraft.yaml
	src/bridge.c
	src/database.c
	src/handle_connack.c
	src/loop.c
	src/persist.c
	test/broker/Makefile
2019-03-16 10:05:38 +00:00
Roger A. Light
a7d0660749 Separate out persist reading code from restoring code. 2019-03-16 09:42:15 +00:00
Roger A. Light
110f4aada6 Don't overwrite disused client state. 2019-03-15 21:38:24 +00:00
Roger A. Light
9411d94842 Start of tests for persistence reading. 2019-03-14 20:57:25 +00:00
Roger A. Light
b6356735b4 Split persist read/write into separate files for easier testing. 2019-03-14 11:08:30 +00:00
Roger A. Light
c944f840a6 Don't advertise shared subs as unavailable any more. 2019-03-14 10:58:15 +00:00
Roger Light
8a8d13cf96 Shared subscription support. 2019-03-14 06:48:33 +00:00
Roger A. Light
173b209bd8 Remove unnecessary calls to time(). 2019-03-13 16:07:37 +00:00
Roger A. Light
89f51aa54a Search sub topics, don't iterate (where possible). 2019-03-13 16:07:37 +00:00
Roger A. Light
2dd24449ad Fix "unused parameter" warnings. 2019-03-13 14:46:05 +00:00
Roger A. Light
0941638143 Fix signed/unsigned comparion warnings.
Closes #1196.
2019-03-13 13:51:08 +00:00
Roger A. Light
b82370a997 Free clients with session expiry > 0 on exit. 2019-03-13 13:22:14 +00:00
Roger A. Light
08249313a4 Don't leak sockets. 2019-03-13 12:58:42 +00:00
Roger Light
1a234323a3 Add support for custom log timestamps.
Closes #1121.
2019-03-13 11:24:14 +00:00
Vinod Kumar
e9350fbb56 print error when listener bind address is not valid
Signed-off-by: Vinod Kumar <kumar003vinod@gmail.com>
2019-03-13 08:14:45 +00:00
Roger Light
a57bba0aae Don't use uhpa for topics, incompatible with uthash. 2019-03-08 23:11:21 +00:00
Roger A. Light
2ea97a6cd9 Check for authentication method on CONNECT, and reject. 2019-03-06 16:12:36 +00:00
Roger A. Light
ac91144495 Session expiry interval support - not working for file persistence. 2019-03-06 14:47:16 +00:00
Roger A. Light
cd07c2b802 Windows build fixes. 2019-03-05 14:01:29 +00:00
Roger A. Light
105ad17dc6 Tests and support for QoS 1 reporting of no subscribers on publish. 2019-03-04 07:36:35 +00:00
Roger A. Light
6a1ac70ee6 Disallow writing to $ topics where appropriate. 2019-03-03 22:00:30 +00:00
Roger A. Light
1d4bf55165 Tidy previous commit and add to changelog. 2019-03-02 22:52:23 +00:00
Roger Light
bb6da93e93
Merge pull request #993 from bbabbi01/origin/develop
Implement DLT logging
2019-03-02 22:51:36 +00:00
Roger A. Light
ce31269e05 Update changelog, bump version, bump copyright year. 2019-02-28 16:56:15 +00:00
Roger A. Light
7207041428 Fix delayed bridge local subs causing missing messages.
Closes #1174. Thanks to beville.

Bug: https://github.com/eclipse/mosquitto/issues/1174
2019-02-28 15:38:15 +00:00
Roger A. Light
acf478eca2 Fix broken mosquitto_passwd on FreeBSD.
Closes #1032. Thanks to jkoopman, Joseph Benden and Ari Suutari.

Bug: https://github.com/eclipse/mosquitto/issues/1032
2019-02-28 14:26:14 +00:00
Roger A. Light
a6f845bc67 Fix openssl deprecated function use. 2019-02-28 12:21:11 +00:00
Roger A. Light
4490d06a63 Coverity fixes.
1398654, 1398656 - lib missing unlock on fatal protocol error
1398655 - broker potential double free on startup after fatal persist
          error.
2019-02-28 11:45:13 +00:00
Roger A. Light
d3d6f3a980 Fix compiling with openssl < 1.1.1. 2019-02-28 11:23:26 +00:00
Roger A. Light
463de0a2c1 Make error messages for missing config file clearer. 2019-02-28 11:13:47 +00:00
Roger A. Light
0632549ce9 Doc improvements for websockets_header_size. 2019-02-28 00:34:23 +00:00
Pierre Fersing
1aaf5f2348 Add websockets_headers_size option
Signed-off-by: Pierre Fersing <pierre.fersing@bleemeo.com>
2019-02-28 00:25:19 +00:00
Roger A. Light
1924afe49e Add explicit support for TLS v1.3 and drop TLS v1.0. 2019-02-27 22:50:01 +00:00
Roger A. Light
130ddf47f7 Add dhparamfile option, to allow DH parameters to be loaded.
This is for Ephemeral DH support on listeners.
2019-02-27 22:26:40 +00:00
Roger A. Light
4564ff1232 Set umask for temp file. 2019-02-27 17:49:19 +00:00
Roger A. Light
87b3ca35f1 Use mkstemp with mosquitto_passwd on non-Windows. 2019-02-27 16:38:54 +00:00
Roger A. Light
48d731ecb5 Use better random numbers for everything, where possible. 2019-02-27 14:15:31 +00:00
Roger A. Light
dfbd33e0f4 Update documentation for bridge backup, plus tweaks
Sets default to use the backoff mechanism.
2019-02-27 13:52:19 +00:00
Abilio Marques
87eb535307 bridge: add decorrelated jitter backoff mechanism
Signed-off-by: Abilio Marques <abiliojr@gmail.com>
2019-02-27 13:25:20 +00:00
Roger A. Light
72941db546 Coverity fixes
1399064
1399065
1398655
1398656
1398654
1399067
1399066
1399063
1399060
1399059
1399068
1399062
1398657
1398653
1302848
1302847
1399070
2019-02-27 12:38:20 +00:00
Steven Lawrance
208c3d3e85 Allow binding a listener to a specific network interface
Signed-off-by: Steven Lawrance <stl@koffein.net>
2019-02-27 09:38:39 +00:00
Roger A. Light
b2c0c3d573 Handle DISCONNECT with will. 2019-02-27 09:27:34 +00:00
Roger A. Light
3b6b6d5fa8 Test improvements
And some related fixes.
2019-02-27 09:27:34 +00:00
Roger A. Light
c506c8335b Will delay tests and implementation. 2019-02-27 09:27:34 +00:00
Roger A. Light
b0c60fb6e1 Separate will reading code. 2019-02-27 09:27:34 +00:00
Roger A. Light
5aabc171b0 Merge branch 'mqtt5' into develop 2019-02-26 18:51:31 +00:00
Roger A. Light
e862a047a8 Rework TLS engine support. 2019-02-26 17:11:29 +00:00
Nicolás Pernas Maradei
20894fcbce Add engine private key password support
Some OpenSSL engines (selectable via tls_engine option) may require a
password to make use of private keys created with them in the first place.

The TPM engine for example, will require a password to access the underlying
TPM's Storage Root Key (SRK), which is the root key of a hierarchy of keys
associated with a TPM; it is generated within a TPM and is a non-migratable
key. Each owned TPM contains a SRK, generated by the TPM at the request
of the Owner. [1]

By default, the engine will prompt the user to introduce the SRK password
before any private keys created with the engine can be used. This could
be inconvenient when running on an unattended system.

Here's where the new tls_engine_kpass_sha option comes in handy. The user
can specify a SHA1 hash of its engine private key password via command
line or config file and it will be passed on to the engine directly.

This commit adds support for both clients (libmosquitto) and broker.

[1] https://goo.gl/qQoXBY

Signed-off-by: Nicolás Pernas Maradei <nicopernas@gmail.com>
2019-02-26 15:50:37 +00:00
Nicolás Pernas Maradei
d5f039ec7c Add TLS engine and keyform support to mosquitto
Add same OpenSSL engine support to mosquitto (server side) previously added to
client side only.

Signed-off-by: Nicolás Pernas Maradei <nicopernas@gmail.com>
2019-02-26 15:50:37 +00:00
Roger A. Light
c3c8c99f5d Fix dropping oversize messages for QoS>0. 2019-02-21 08:31:54 +00:00
Roger A. Light
1d17ced449 Broker configurable max_packet_size
Plus tests.
2019-02-19 15:57:20 +00:00
Roger A. Light
1877f8a326 Tests and implementation for maximum packet size.
This is for broker outgoing connack and publish packets only.
2019-02-18 19:50:51 +00:00
Roger A. Light
8db16591fa Test and fix for subscription identifiers not being updated.
Closes #1169. Thanks to Christoph Krey.
2019-02-18 12:24:19 +00:00
Roger A. Light
66c1e2ccf0 Add mosquitto_unsubscribe_multiple(), plus tests. 2019-02-17 20:59:16 +00:00
Roger A. Light
1479c57e34 v5 report reason code=no sub when unsubscribing. 2019-02-17 10:14:02 +00:00
Roger A. Light
1ec0cea34a Fix missing reason_code on v5 UNSUBACK.
Closes #1167. Thanks to Christoph Krey.
2019-02-17 09:30:06 +00:00
Roger A. Light
5e8199323b 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. Thanks to quonb.
2019-02-14 17:46:01 +00:00
Roger A. Light
8350956a08 Make include_dir sort usefully case sensitive. 2019-02-13 22:55:15 +00:00
Roger A. Light
321e566af6 Fix unref'd messages being saved to the persistence file.
This was leaving dangling messages that were never freed.

Closes #389. Thanks to pjchx.
2019-02-13 12:08:05 +00:00
Roger A. Light
084062c85e Merge branch 'fixes' into mqtt5 2019-02-12 17:05:42 +00:00
Roger A. Light
9999faf9da Add rewritten build test script and remove some build warnings. 2019-02-12 13:24:54 +00:00
Roger A. Light
04e89450c0 Don't require C99 compiler. 2019-02-09 13:52:09 +00:00
Roger A. Light
715da28602 Fix include_dir not sorting config files before loading.
Thanks to momoskitto.
2019-02-08 23:52:11 +00:00
Roger A. Light
2e1c2c430f per_listener_settings true must come before other security settings.
Produce error if this is not the case. Closes #1164, thanks to
momoskitto.
2019-02-08 23:14:43 +00:00
Roger A. Light
9378016b19 Fix build failure when using WITH_ADNS=yes 2019-02-08 21:34:08 +00:00
Roger A. Light
05458eb35d Fix some unused variable warnings. 2019-02-08 13:01:07 +00:00
Roger A. Light
1c075988ca Log message for disconnecting a client with invalid UTF-8 topic.
Closes #1144. Thanks to Kris Mattheus.
2019-02-08 13:01:07 +00:00
Roger A. Light
17b52bd5d1 Windows: Fix possible crash when client disconnects.
Closes #1137. Thanks to Kris Mattheus.
2019-02-08 13:01:07 +00:00
Roger A. Light
d6a690aa8d Fix Will not being sent for Websockets clients.
Closes #1143. Thanks to salcedo.
2019-02-08 13:01:07 +00:00
Roger A. Light
29a1936c77 Fix spaces not being allowed in the bridge remote_username option.
Closes #1131. Thanks to beville.
2019-02-08 13:01:07 +00:00
Roger Light
c40957a7d8 Fix and tests for CVE-2018-12546. 2019-02-08 13:01:07 +00:00
Roger A. Light
d8505624d0 Fix and tests for security bug #541870. 2019-02-08 13:01:07 +00:00
Roger A. Light
36b5421c59 Fix and tests for security bug #543401. 2019-02-08 13:01:07 +00:00
Steven Lawrance
84d5028c2e Include sys/socket.h for AF_INET definition
Without this, mosquitto doesn't build on FreeBSD with websockets enabled

Signed-off-by: Steven Lawrance <stl@koffein.net>
2019-02-08 13:01:07 +00:00
Roger Light
5236295159 Handle mismatched handshakes properly.
For example, a QoS1 PUBLISH with QoS2 reply.
2019-02-08 13:01:07 +00:00
Vinod Kumar
78259850ed ignore inline comments while parsing optional config params
Signed-off-by: Vinod Kumar <kumar003vinod@gmail.com>
2019-02-08 13:01:07 +00:00
Roger A. Light
be9c1071b0 Fix compilation when openssl deprecated APIs are not available.
Closes #1094. Thanks to Rosen Penev.
2019-02-08 13:01:07 +00:00
Roger A. Light
70c4097b6f Fix comparison of boolean values in CMake build.
Closes #1101. Thanks to Mojca Miklavec and Andrew L. Moore.
2019-02-08 13:01:07 +00:00
Roger A. Light
873ffce27a Send DISCONNECT on invalid topic alias, plus test. 2019-01-25 22:53:31 +00:00
Roger A. Light
5e7f43c9ea Temporarily disable all extended AUTH. 2019-01-25 22:02:12 +00:00
Roger A. Light
6b977fa198 Test and fixes for expiring retained messages. 2019-01-23 10:00:13 +00:00
Roger A. Light
ca3782b38d Test and fixes for will message expiry interval. 2019-01-22 17:51:57 +00:00
Roger A. Light
6a59e92db8 Set remaining message expiry interval when republishing. 2019-01-22 12:43:52 +00:00
Roger A. Light
85615c1bae AUTH packet can be truncated. 2019-01-18 21:38:29 +00:00
Roger A. Light
f9a17e2782 Add alias support to the broker. 2019-01-18 21:30:34 +00:00
Roger A. Light
37727b402b Fix maximum qos on listener conf. 2019-01-17 21:04:46 +00:00
Roger Light
8513af4da5 Tests and fixes for shortened DISCONNECT packets. 2019-01-17 18:51:23 +00:00
Roger A. Light
5f8d86b4ee Fix sub-denied test. 2019-01-10 22:10:32 +00:00
Roger A. Light
326292681a Add maximum-qos support to broker and client.
This comes in the form of:

* Per listener maximum_qos option, which can be in the range 0-2.
* Changes to mosquitto_publish*() to return MOSQ_ERR_QOS_NOT_SUPPORTED
  if attempting to publish with a higher QoS than supported.
* Bridges will downgrade messages to match the maximum QoS.

More tests on the broker side (specifically bridges) are required. This
needs bridge support for MQTT 5 first.
2019-01-09 18:03:01 +00:00
Roger Light
740a128769 Support PUBREC reason code >=0x80 as partial qos2 flow. 2019-01-09 15:00:12 +00:00
Roger Light
84660e1cbe Send maximum limits for QoS>0.
This needs more work on the broker front to simplify the design.
2019-01-08 18:38:47 +00:00
Roger A. Light
16e83bfe5d Process receive maximum (as max_inflight_messages). 2018-12-30 21:53:50 +00:00
Roger A. Light
7c3666d593 Subscription identifier support. 2018-12-20 15:32:43 +00:00
Roger A. Light
dab6452a1d Add test for duplicate CONNECT. 2018-12-19 22:17:39 +00:00
Roger A. Light
ec1178806c Fix bridge tests. 2018-12-19 14:38:49 +00:00
Roger A. Light
fcf4cd0b27 Merge branch 'master' into mqtt5 2018-12-19 14:11:11 +00:00
Roger A. Light
31e6dbbe74 Tests and fixes for subscription options. 2018-12-19 12:54:04 +00:00
Roger A. Light
72fdb590b1 Fix no local and retain as published for local bridges. 2018-12-19 10:45:40 +00:00
Roger A. Light
2919510384 No local support. 2018-12-14 13:54:26 +00:00
Roger A. Light
db7901884f Retain-as-published support. 2018-12-14 13:36:02 +00:00
Roger A. Light
89f3d7bb3f Don't print connect/disconnect messages when connection_messages false.
Closes #772. Closes #613. Closes #537.

Thanks to Christopher Maynard, Brandon Arrendondo, and qubeck.
2018-12-11 10:55:39 +00:00
Roger A. Light
a00dd29af8 Fix building where TLS-PSK is not available.
Closes #68.
2018-12-11 10:55:31 +00:00
Roger A. Light
9097577b49 Fix acl_file being ignore for default listener if with per_listener_settings
Close #1073. Thanks to Jef Driesen.

Bug: https://github.com/eclipse/mosquitto/issues/1073
2018-12-09 21:23:46 +00:00
Jelle van der Waa
1a6f8d3c28 src: ASN1_STRING_data is deprecated in OpenSSL 1.1
ASN1_STRING_get0_data replaces ASN1_STRING_data in OpenSSL 1.1 therefore
add an #ifdef for backwards compatibility.

Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl>
2018-12-09 21:22:04 +00:00
Roger A. Light
f90ba23738 Retain handling support. 2018-12-06 22:25:45 +00:00
Roger A. Light
9896e61727 Test and small fix for response-topic and correlation-data props. 2018-12-06 09:29:25 +00:00
Roger A. Light
6ef2c79e9a Add max_keepalive, for limiting keepalives of MQTT v5 clients. 2018-12-06 08:49:02 +00:00
Roger A. Light
48c2217015 auto_id_prefix now defaults to 'auto-'. 2018-12-05 17:17:35 +00:00
Roger A. Light
1d3949bce0 Improve broker generated client ids for the non-Linux case.
Removes libuuid dependency.
2018-12-05 16:39:45 +00:00
Abilio Marques
ead440e47d bridge: fix issue where keepalive_interval gets added to restart_timeout using ADNS
Signed-off-by: Abilio Marques <abiliojr@gmail.com>
2018-12-05 11:42:24 +00:00
Roger A. Light
3a871828ac Print message on error when installing as a Windows service. 2018-12-05 11:25:41 +00:00
Roger A. Light
c9ed2708f6 Don't reload auth_opt_ options on reload.
This matches the behaviour of the other plugin options.

Closes #1068. Thanks to Jason McFadyen.

Bug: https://github.com/eclipse/mosquitto/issues/1068
2018-12-04 20:51:25 +00:00
Roger A. Light
464b12f3d6 Fix outgoing retained messages not being sent by bridges.
This now happens on initial connection, after CONNACK is processed,
before it was happening (and being dropped) before the connection was
made.

Closes #1040. Thanks to giover.

Bug: https://github.com/eclipse/mosquitto/issues/1040
2018-12-04 20:45:15 +00:00
Roger A. Light
e169f1c7c2 When using ADNS, don't ask for all network protocols when connecting.
This can lead to confusing "Protocol not supported" errors if the
network is down, because UDP sockets are provided.

Thanks to jsaak.

Closes #1062.

Bug: https://github.com/eclipse/mosquitto/issues/1062
2018-12-04 12:39:00 +00:00
Roger A. Light
d29dac087d Add socket_domain option. 2018-12-04 11:48:29 +00:00
Roger A. Light
7020fad86c Add server support for Assigned Client Identifier. 2018-11-29 17:19:26 +00:00
Roger A. Light
d5108956bf Process session-expiry-interval on CONNECT and DISCONNECT.
Add test to check for invalid values.
2018-11-27 12:23:21 +00:00
Roger A. Light
54db895cb3 Rename clean_session to clean_start for v5. 2018-11-27 10:02:10 +00:00
Roger A. Light
1241f68ff5 Macro update 2018-11-27 09:58:39 +00:00
Roger Light
17d213b79a Declare lack of support for shared subs and sub IDs. 2018-11-22 18:54:12 +00:00
Roger Light
9560c5bac7 Add retain_available support. 2018-11-22 18:21:40 +00:00
Roger Light
6ca746695f Pass db to send__connack() to give it access to config. 2018-11-22 17:32:43 +00:00
Roger A. Light
9464e3fe19 Guard against possible null client id. 2018-11-20 10:15:34 +00:00
Roger A. Light
098a1c8ecf Fix subscribe_multiple datatypes. 2018-11-13 14:05:03 +00:00
Roger A. Light
beb96c6b8b Merge branch 'master' into develop 2018-11-11 21:41:44 +00:00
Roger A. Light
b54e379fba Fix websockets listeners not verifying client certs.
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.

Thanks to creising.
2018-11-08 12:10:28 +00:00
Roger A. Light
ba67e1ffe5 Don't use gnu-specific strerror_r. 2018-11-07 18:27:15 +00:00
Roger A. Light
34c752a0d0 Give better error message if a client sends a password without a username.
Closes #1015. Thanks to TabascoEye.
2018-11-07 17:29:39 +00:00
Roger A. Light
9f7577aab6 $SYS/broker/clients/disconnected should never be negative.
Closes #287. Thanks to Lovisa Johansson.

Bug: https://github.com/eclipse/mosquitto/issues/287
2018-11-07 17:23:43 +00:00
Roger A. Light
d7bcec4878 Don't disconnect clients when a plugin denies SUBSCRIBE.
Thanks to Ibrahim Koujar.

Bug: https://github.com/eclipse/mosquitto/issues/1016
2018-11-07 10:06:32 +00:00
Abilio Marques
a4a5236568 fix bug where bridge doesn't honor restart_timeout setting
Signed-off-by: Abilio Marques <abiliojr@gmail.com>
2018-11-06 23:28:40 +00:00
Bartosz Taczała
e86b27a2da Adding support for QNX7.0.0
Change-Id: Id01e2880aa5cadc0e93a46b95fe675e1938051fa
Signed-off-by: Bartosz Taczała <bartosz.taczala@mobica.com>
2018-11-06 23:11:09 +00:00
Roger A. Light
eff8fab1b4 Only process network errors for clients that have nothing to read.
Closes #7.
2018-11-06 23:02:33 +00:00
Roger A. Light
93f9e965a8 Only remove context from hash if there is a client id.
This should never happen, but just in case.
2018-11-06 23:01:06 +00:00
Roger A. Light
f77c1ca91b private struct mqtt5__property -> public mosquitto_property. 2018-11-01 23:50:54 +00:00
Roger A. Light
80f526a5e5 Message Expiry Interval support. 2018-11-01 21:51:35 +00:00
Roger A. Light
4ca83c1768 Fix leak when handling publish props. 2018-11-01 16:50:23 +00:00
Roger A. Light
de3a9af1f7 Client+library support for unsubscribe properties. 2018-11-01 14:12:52 +00:00
Roger A. Light
383608613a Client+lib will property support. 2018-11-01 11:37:57 +00:00
Roger A. Light
12cba75c73 Client support for adding properties. 2018-10-31 12:38:39 +00:00
Roger A. Light
636e813d1c Load of constant renames ahead of making mqtt_protocol.h public. 2018-10-30 11:11:31 +00:00
Roger A. Light
9eebcf6704 Rename property__free_all->mosquitto_property_free_all
Make public function.
2018-10-30 10:16:42 +00:00
Roger A. Light
12fa336140 Handle some incoming PUBLISH properties.
PAYLOAD_FORMAT_INDICATOR, CORRELATION_DATA, USER_PROPERTY, CONTENT_TYPE
are now all passed on to subscribing clients from an incoming PUBLISH
only (not from Wills). The other PUBLISH properties are silently
dropped.
2018-10-25 16:35:24 +01:00
Roger A. Light
b6c667689d Write properties for all commands apart from AUTH. 2018-10-25 13:21:42 +01:00
Roger A. Light
8077376a79 Add read support for AUTH packets. 2018-10-25 12:54:17 +01:00
Roger A. Light
ca40255720 mid == 0 is a protocol error. 2018-10-25 12:12:57 +01:00
Roger A. Light
eefa7f7604 All existing commands read properties. 2018-10-25 12:11:00 +01:00
Roger A. Light
723d9c2782 Check whether properties are on the correct commands. 2018-10-25 11:23:04 +01:00
Roger A. Light
267178bd99 User properties are copied from PUBLISH to PUBLISH. 2018-10-25 10:24:19 +01:00
Roger A. Light
0baf358cf8 Add properties member to will struct. 2018-10-24 14:07:09 +01:00
Roger A. Light
35dea07dcd Merge branch 'master' 2018-10-23 10:39:20 +01:00
JaeHoon Lee
2cb0354163 Implement DLT logging feature for automotive platform
Signed-off-by: JaeHoon Lee <bbabbi01@gmail.com>
2018-10-21 14:34:03 +00:00
Roger A. Light
5edc87bcdf Build options for building with coverage support. 2018-10-16 14:35:03 +01:00
Roger A. Light
a7fff2ad2e Topic test improvements. 2018-10-16 13:49:38 +01:00
Roger A. Light
8210c1fa7a All outgoing packets now write property length for MQTT 5.
At the moment this only writes a 0 property length, i.e. no properties.
It does mean that output packets are more correct than before.
2018-10-10 12:42:27 +01:00
Roger A. Light
246c9e6565 Read will properties, and free properties immediately for the moment. 2018-10-10 08:41:10 +01:00
Roger A. Light
abb3fee1f8 Coverage reporting for whole broker. 2018-10-06 21:56:48 +01:00
Roger A. Light
f4b2838574 Property reading, and tests for byte properties. 2018-10-04 17:18:57 +01:00
Roger A. Light
366744bad7 Fix subscribe_multiple datatypes. 2018-10-04 09:46:51 +01:00
Roger A. Light
400db91166 Handle UTF-8 validation in packet__read_string. 2018-10-03 15:04:24 +01:00
Roger A. Light
99a1c0e43a Move simple datatype reading functions to own file.
This facilitates easier testing.
2018-10-03 10:23:58 +01:00
Roger A. Light
1488992ea8 Naive reading of MQTT 5 properties. No processing done. 2018-10-02 16:43:40 +01:00
Roger Light
6c9e8d51c2 Merge branch 'develop' into mqtt5 2018-10-02 11:28:03 +01:00
Roger A. Light
1867f30785 Merge branch 'master'
Conflicts:
	ChangeLog.txt
2018-10-02 08:31:54 +01:00
Vinod Kumar
e492a61cd8 return MOSQ_ERR_INVAL if config has invalid boolean value
Signed-off-by: Vinod Kumar <kumar003vinod@gmail.com>
2018-09-29 07:51:12 +01:00
Roger A. Light
cf9a72d8db Add mosquitto_subscribe_multiple. 2018-09-27 22:05:15 +01:00
Roger A. Light
588d39efdc Fix Windows version not starting if include_dir did not contain any files.
Closes #566.

Thanks to marleau.
2018-09-25 16:14:57 +01:00
Roger A. Light
f9c9f3d396 Fix incorrect hash usage with duplicate clients.
Fix duplicate clients being added to by_id hash before the old client
was removed.

Closes #645.
2018-09-25 14:25:54 +01:00
Roger A. Light
7b1892caef Fix retained msgs not sent by bridges.
This occurred when a bridge connected for the first time and so made a
local subscription for outgoing topics.

Closes #701.
2018-09-25 14:25:54 +01:00
Roger A. Light
f7474d3482 Revert "Remove some test that was always true"
This reverts commit 6fc7cadb63.
2018-09-25 14:25:54 +01:00
Kurt Van Dijck
e3b4bd8937 fix signal handler on win32
The signal handler thread on win32 did listen to 4 HANDLEs,
of which only 3 were initialized.
The result was 1 thread eating 100% cpu.
This commit reduces the HANDLE array storage.

Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
2018-09-25 10:34:28 +01:00
Roger A. Light
7ca3a24686 Remove requirement to use user root in snap package config files. 2018-09-20 12:05:02 +01:00
Roger A. Light
0e16a248f2 Elevate log level to warning for situation when socket limit is hit. 2018-09-20 12:00:51 +01:00
Roger A. Light
55ca61f14e Fix segfault on HUP when bridges and security options are configured.
Closes #849. Closes #965. Thanks to Wolfgand Hottgenroth and Dustin Sallings.
2018-09-19 17:52:23 +01:00
Roger A. Light
2b4ba10b3d Fix "round_robin false" behaviour.
Closes #481.
2018-09-19 17:30:38 +01:00
Roger A. Light
3ae387e232 Close spare sock at exit. 2018-09-19 13:01:13 +01:00
Roger A. Light
1e47ee4cad Fix for bridge connections when using WITH_ADNS=yes. 2018-09-19 12:55:08 +01:00
Roger A. Light
4ee6941188 Primitive v5 CONNACK support - no properties. 2018-09-19 11:13:50 +01:00
Roger A. Light
561513fdd4 Very simple v5 CONNECT support - no properties. 2018-09-19 11:00:15 +01:00
Roger A. Light
33a523eea9 Add identifiers for v5.
Clients know about v5, just need library support...
2018-09-19 10:59:41 +01:00
Roger A. Light
99c6ec7f6e Protocol name will never be changed from MQTT. 2018-09-19 10:58:36 +01:00
Roger A. Light
0bacff11df Rename mqtt3_protocol.h -> mqtt_protocol.h. 2018-09-19 10:58:12 +01:00
Roger A. Light
d1b36507db Better implementation of #948. 2018-09-18 12:08:49 +01:00
Roger A. Light
ee8e20de75 Fix excessive CPU usage when the number of sockets exceeds the system limit.
Closes #948. Thanks to wiebeytec.
2018-09-18 11:54:58 +01:00
Roger A. Light
dceb02f444 Make it easier to build without bundled uthash.h.
Use "make WITH_BUNDLED_DEPS=no".
2018-09-08 10:24:12 +01:00
Roger A. Light
e6a0199bb2 Fix incorrect call to setsockopt() for TCP_NODELAY.
Closes #941. Thanks to rfalke.

Signed-off-by: Roger A. Light <roger@atchoo.org>
2018-08-30 21:01:43 +01:00
Roger A. Light
2221deb7a7 Fix build when using WITH_ADNS=yes. 2018-08-30 20:44:17 +01:00
Roger A. Light
11395f9852 Fix accessor functions for username and client id when used in plugin auth check. 2018-08-16 17:00:00 +01:00
Roger A. Light
9d157f86ff Fix for building on Windows with static lws. 2018-08-16 13:31:15 +01:00
Roger A. Light
14bd96e1e1 Add support for compiling with static libwebsockets library. 2018-08-16 11:28:26 +01:00
Roger A. Light
88765a5e80 Consistent use of config.h across the project. 2018-08-16 11:14:51 +01:00
Roger A. Light
0a4810286b Check for 918 2018-08-15 17:41:14 +01:00
Roger A. Light
a199cac69e Don't confuse expiring and duplicate clients. 2018-08-15 17:27:59 +01:00
Roger A. Light
ab5af8f0b9 Fix building for libwebsockets < 1.6. 2018-08-14 17:20:22 +01:00