Commit Graph

264 Commits

Author SHA1 Message Date
Roger A. Light
a65f946e83 Move headers to own directory. 2020-10-07 22:06:01 +01:00
Roger A. Light
c90e49af1b Merge remote-tracking branch 'origin/fixes' into develop 2020-09-24 17:03:14 +01:00
Roger A. Light
cf1c156765 New plugin interface
This is not specific to authentication, and allows plugins greater flexibility in what events they are interested in. It also adds message handling, and $CONTROL handling.
2020-09-22 14:49:28 +01:00
Roger A. Light
97bd527df0 Breaking: allow_anonymous defaults to false. 2020-09-17 11:29:32 +01:00
Roger A. Light
4372a2b925 Default test timeout of 60s by default is too long. 2020-09-16 14:45:22 +01:00
Roger A. Light
5daa5ee162 Add support for $CONTROL/ topics in plugins. 2020-09-10 15:32:47 +01:00
Roger A. Light
748e5f69c8 Fix acl-access-variants test. 2020-09-07 16:11:18 +01:00
Brandt Hill
16eecfcbc5 Add 'deny' as an option for topics/patterns in acl file to allow certain topics to be explicitly denied when they might otherwise be allowed through a more open read/write/readwrite option. Example: 'topic readwrite test/#' and 'topic deny test/hello/#' may be added so that a user can read/write to all test/# topics, except for test/hello/#.
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Change variable name for clarity. Remember to initialize bool (I'm bad at C).

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Add documentation to config man page

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Add test case for deny option

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

Add deny acls to top of the list to preserve early exit

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>

change comments

Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
2020-08-17 00:13:10 -05:00
Roger Light
58aa41c813 Optimise use of db__message_write()
New messages are now queued for clients when old ones are sent, rather than on every iteration of the main loop. This produces good performance improvements.
2020-08-12 15:29:08 +01:00
Roger A. Light
69f84bbca9 Simplify "expect_packet" tests. 2020-08-12 15:18:18 +01:00
Roger A. Light
2dc8d2a19a Allow plugins to send messages to specific clients. 2020-08-12 15:18:17 +01:00
Roger A. Light
84e4ba2c1e Send DISCONNECT with malformed-packet reason code on bad PUBLISHes. 2020-08-02 23:12:47 +01:00
Roger A. Light
b1e9377a20 Send DISCONNECT with malformed-packet reason code on bad SUBSCRIBEs. 2020-08-02 15:10:12 +01:00
Roger A. Light
8416b007ec Send DISCONNECT with malformed-packet reason code on bad UNSUBSCRIBEs. 2020-08-02 14:22:40 +01:00
Roger A. Light
0edb3e49e7 Remove debug mode 2020-07-16 11:23:25 +01:00
Roger A. Light
fdaeaee6dd Fix test. 2020-04-07 16:10:02 +01: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
Karl Palsson
3d45c3186c test/broker: align identical code
06-bridge-b2br-disconnect-qos1 and
06-bridge-br2b-disconnect-qos1 have ~identical header code.

unify the identical bits to make it easier to visually see this.

Signed-off-by: Karl Palsson <karlp@etactica.com>
2020-03-20 10:47:11 +00:00
Roger A. Light
d96543c0b8 Merge branch 'fixes' into develop 2020-03-03 12:54:57 +00:00
Roger A. Light
c2ec6f002e Fix test to match fixed protocol check. 2020-02-27 23:12:28 +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
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
16dc5456bd Enable MQTT v5 in outgoing retain test. 2019-11-07 13:25:46 +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
28c11f4cce Fix tests where broker suddenly disconnects client
This seems to be required just on more modern Python versions.
2019-11-06 14:07:07 +00:00
Jerome Malinge
fba1f6bc0a Fix test on invalid null will topic value in connect packet
Signed-off-by: Jerome Malinge <gromgromm@yahoo.com>
2019-11-04 15:58:00 +01:00
Jerome Malinge
11dc077d15 Fix test on invalid reserved bit value in connect packet
Signed-off-by: Jerome Malinge <gromgromm@yahoo.com>
2019-11-04 15:57:58 +01:00
Jerome Malinge
ce0b0d23d6 Add send of pubcomp in 02-subpub-qos2 script
To keep the broker session working while launching several tests on
the same broker, the last packet of this transaction must be sent.

Signed-off-by: Jerome Malinge <gromgromm@yahoo.com>
2019-11-04 15:57:55 +01:00
Roger A. Light
b2a9daf1db 02 broker subpub tests with v5 support 2019-10-13 18:08:44 +01:00
Roger A. Light
b966455f21 02 broker subscribe tests with v5 support 2019-10-13 13:04:44 +01:00
Roger A. Light
3261c30d08 02 broker unsubscribe tests with v5 support 2019-10-13 12:58:40 +01:00
Roger A. Light
e0d0af54a5 01 broker tests with v5 support 2019-10-10 17:15:19 +01:00
Roger A. Light
7b73cd2bf7 04 broker tests with v5 support 2019-10-10 15:35:43 +01:00
Roger A. Light
b9360bb147 Fixes for 06 broker v5 tests 2019-10-10 14:51:32 +01:00
Roger A. Light
cae7ddeec1 10 broker tests with v5 support 2019-10-10 14:20:00 +01:00
Roger A. Light
feb79d5880 11 broker tests with v5 support 2019-10-10 14:20:00 +01:00
Roger A. Light
c453d2cb3e 07 broker tests with v5 support 2019-10-10 14:20:00 +01:00
Roger A. Light
48f1ca8538 05 broker tests with v5 support 2019-10-10 14:20:00 +01:00
Roger A. Light
16f57cc834 Simpler v5 session expiry in tests. 2019-10-10 14:20:00 +01:00
Roger A. Light
98d600099b 03 broker tests with v5 support 2019-10-10 14:20:00 +01:00
Roger A. Light
7ea5ba845b Add "ready" message to will takeover test. 2019-10-10 14:20:00 +01:00
Roger A. Light
09e95fff5a Add test for session takeover and wills. 2019-10-10 14:20:00 +01:00
Roger A. Light
87bd08b0e0 Add MQTT v5 support to bridge tests. 2019-10-09 13:31:23 +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
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
8dcb993274 Some tests weren't using python3. 2019-09-24 22:51:55 +01:00
Roger A. Light
3e094991c4 Hopeful fix for travis. 2019-09-17 12:50:48 +01:00
Roger A. Light
e479a80cbe Extra test for issue 1401. 2019-09-17 12:50:37 +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
9bbf5bb65f Fix 11-message-expiry test when running under valgrind 2019-09-11 08:51:51 +01:00
Roger A. Light
367fc0cffc Updated SSL test files, plus a new empty crl file. 2019-09-10 13:34:14 +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
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
be07c842d1 Don't error trying to cleanup missing persistence file. 2019-08-07 11:32:26 +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
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
f14a47c015 Further attempt 2019-05-29 22:02:40 +01:00
Roger A. Light
18b897e5e3 Attempt to fix 11-message-expiry for travis. 2019-05-29 21:31:27 +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
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
41cb9bf750 Simplify ping checking in tests. 2019-05-13 21:17:04 +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
Roger A. Light
ab77b5c000 Test for Will property usage. 2019-04-30 13:25:32 +01:00
Roger A. Light
d6c7923d16 Add make check and document testing procedure.
Also support test target in cmake.
2019-04-26 16:25:35 +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
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
fb8a2baaad Refactor client msgs to use utlist to reduce code complexity. 2019-04-03 14:13:12 +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
636d0f1f74 Fix printing on broker tests. 2019-04-02 14:06:28 +01:00
Roger A. Light
a8dce08618 Always kill broker on failure. 2019-04-02 13:58:44 +01:00
Roger A. Light
950dabcf9b Test for leaking will on connect denied. 2019-04-02 13:11:20 +01:00
Roger A. Light
e5f58a8ff3 Test for unsupported extended auth. 2019-04-02 10:22:16 +01:00
Roger A. Light
0d7523c309 Use helpers in all tests. 2019-04-02 10:22:16 +01:00
Roger A. Light
7e49d91898 Convert tests to Python 3 2019-03-28 21:32:12 +00:00
Roger A. Light
75c2a39d2c Send topic alias maximum from the broker. 2019-03-27 17:38:35 +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
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
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 Light
8a8d13cf96 Shared subscription support. 2019-03-14 06:48:33 +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
105ad17dc6 Tests and support for QoS 1 reporting of no subscribers on publish. 2019-03-04 07:36:35 +00:00
Roger A. Light
7b002abd7e Sort tests. 2019-03-03 22:07:44 +00:00
Roger A. Light
7448f0cab8 Update merged tests. 2019-03-03 22:04:22 +00:00
Roger A. Light
6a1ac70ee6 Disallow writing to $ topics where appropriate. 2019-03-03 22:00:30 +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
36f10c7623 Update tests to not use TLS 1.0. 2019-02-28 12:08:26 +00:00
Roger A. Light
91a2932e25 Add missing test. 2019-02-27 09:37:02 +00:00
Roger A. Light
b2c0c3d573 Handle DISCONNECT with will. 2019-02-27 09:27:34 +00:00