Roger A. Light
9372f425b9
Remove debug statements.
2019-04-17 13:05:58 +01:00
Roger A. Light
f42a72b46b
Deprecation warnings for C++ wrapper.
2019-04-17 11:31:15 +01:00
Roger A. Light
6438ce861e
Minor build variant fixes.
2019-04-17 11:00:54 +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
dec769ce33
Client and doc ALPN additions
...
Add ALPN support for all clients, update documentation, and add to ChangeLog.
2019-04-11 11:52:34 +01:00
Roger A. Light
f041cb484a
No need to support versions that aren't supported by upstream.
2019-04-11 11:13:58 +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
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
4fad9aaf24
Consistent message formats.
2019-04-04 22:09:12 +01:00
Roger A. Light
2e7dcee342
Multistep auth, plus reauth, plus tests.
2019-04-04 22:08:55 +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
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
1220ba4bfe
Rejig OCSP code.
2019-03-26 22:13:42 +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
67707b819d
Fix some -Wextra compiler warnings.
2019-03-26 12:15:34 +00:00
Roger A. Light
830f814264
Fix Coverity Scan defect 1400439. Access without lock.
2019-03-26 11:37:31 +00:00
Roger A. Light
5691456ac7
Remove errant header from merge.
2019-03-21 09:48:27 +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
ad2ce6c4e6
Add internal logging type, for development debugging.
2019-03-17 20:54:43 +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
110f4aada6
Don't overwrite disused client state.
2019-03-15 21:38:24 +00:00
Roger A. Light
cc153cfc90
Cleanup TLS UI method on exit.
2019-03-14 09:53:23 +00:00
Roger Light
8a8d13cf96
Shared subscription support.
2019-03-14 06:48:33 +00:00
Roger A. Light
5be83ec1d7
Topic matching optimisations.
2019-03-13 16:03:28 +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
08249313a4
Don't leak sockets.
2019-03-13 12:58:42 +00:00
Roger A. Light
8d513afffb
Add missing mosquitto_userdata function. Closes #1191 .
2019-03-07 10:18:38 +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
ce31269e05
Update changelog, bump version, bump copyright year.
2019-02-28 16:56:15 +00:00
Roger A. Light
988554e7f0
Fix openssl deprecated warnings.
2019-02-28 16:47:16 +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
krismattheus
479d8e5f1a
fix incorrect return code when connecting in non-blocking mode
...
Signed-off-by: krismattheus <kris.mattheus@visionbms.com>
2019-02-28 00:16:04 +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
1a3eaeabce
Only use getrandom on recent glibc, when TLS not in use.
2019-02-27 20:58:29 +00:00
Roger A. Light
38711fc3f3
Fix merge error for C90 compile fail.
2019-02-27 17:34:32 +00:00
Roger A. Light
deb2fdfc98
Use lib provided random id. Change lib generated id to alphanumeric only.
2019-02-27 14:53:07 +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
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
Roger A. Light
b2c0c3d573
Handle DISCONNECT with will.
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
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
f88cc06435
Add TLS engine and keyform support to libmosquitto
...
- Clients can now offload crypto tasks to an external crypto device through
the OpenSSL ENGINE API.
- The keyfiles can now be treated as PEM or ENGINE keys.
- Two new functions were added to libmosquitto to set up the previously
mentioned features.
- Both mosquitto_sub and mosquitto_pub include support to turn on the mentioned
features through command line options.
Signed-off-by: Nicolás Pernas Maradei <nicopernas@gmail.com>
2019-02-26 15:48:00 +00:00
Roger A. Light
f4e24f9524
Use higher resolution timer for random client id generation.
2019-02-26 14:26:05 +00:00
Roger A. Light
1d17ced449
Broker configurable max_packet_size
...
Plus tests.
2019-02-19 15:57:20 +00:00
Roger A. Light
8fb4ad48b5
Strings for new error codes.
2019-02-19 15:53:15 +00:00
Roger A. Light
b9b8e0ff2a
Add client support for outgoing maximum packet size.
2019-02-19 15:14:34 +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
66c1e2ccf0
Add mosquitto_unsubscribe_multiple(), plus tests.
2019-02-17 20:59:16 +00:00
Roger A. Light
458a9840ad
Bump version for test release.
2019-02-14 10:52:49 +00:00
Roger A. Light
bb72cf9088
Bump version number, update webpage.
2019-02-13 23:49:17 +00:00
Roger A. Light
f9f3fdbfe3
Fix pattern matching test.
2019-02-13 12:05:43 +00:00
Roger A. Light
084062c85e
Merge branch 'fixes' into mqtt5
2019-02-12 17:05:42 +00:00
Roger A. Light
b6dc4e5780
Fix datatype_read test.
2019-02-12 11:34:45 +00:00
Roger A. Light
bb914b985c
Fix mosquitto_topic_matches_sub()
rc with sub=="topic/#abc".
...
This now returns MOSQ_ERR_INVAL as expected.
2019-02-12 11:34:45 +00:00
Roger A. Light
e72d1d6ff5
Fix mosquitto_topic_matches_sub()
rc with sub=="topic/#abc".
...
This now returns MOSQ_ERR_INVAL as expected.
2019-02-12 11:26:23 +00:00
Roger A. Light
1b5c900e77
Update CVE details and bump version number.
2019-02-08 13:01:07 +00:00
Roger A. Light
7ff9c3763b
Fix socks build when using cmake.
2019-02-08 13:01:07 +00:00
Roger A. Light
f952ae3a67
Fixed durable clients being unable to receive messages when offline.
...
This occurred when per_listener_settings was set to true.
Closes #1081 . Thanks to dwin-wangjt.
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
ab8b57ff54
Allow broker to always restart on Windows when using log_dest file
.
...
Closes #1080 . Thanks to lcouz.
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
Matthias Stone
4325c44baf
Don't clear SSL context when TLS connection is closed.
...
Previous behaviour would clear the external SSL_CTX provided by
MOSQ_OPT_SSL_CTX. This required the user to reset the SSL_CTX every
disconnect, and trust that they were not leaking references.
Recreating the SSL context for every connection is not necessary, and the
SSL context is freed in mosquitto_destroy, which is sufficient.
Signed-off-by: Matthias Stone <matthias@bellstone.ca>
2019-02-08 13:01:07 +00:00
Roger A. Light
e8320cbf19
Fix TLS connections not working over SOCKS.
...
Thanks to Mark Oeltjenbruns.
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
Maksym Ruchko
f6943b006a
Fixed threaded enum lost in merges
...
Change was part of the original commit e8185ddaa7
"[166] Don't cancel external threads."
and then lost during code reorganizing and subsequent merge,
commits 970ba58da6
81cb7ab547
Signed-off-by: Maksym Ruchko <mruchko@advantech-bb.com>
2019-02-08 13:01:07 +00:00
Roger A. Light
e1976739b8
Fix duplicate error values.
...
Closes #1109 . Thanks to Tifaifai.
2019-01-23 16:37:48 +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
f9a17e2782
Add alias support to the broker.
2019-01-18 21:30:34 +00:00
Roger Light
8513af4da5
Tests and fixes for shortened DISCONNECT packets.
2019-01-17 18:51:23 +00:00
Roger Light
4b97a90ef9
Tests and fixes for truncated PUB* packets
...
For the cases where reason_code is 0, or properties are missing.
2019-01-17 17:24:31 +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
930a314caf
Add reason_code to on_publish_v5 callback.
2019-01-09 17:06:43 +00:00
Roger Light
740a128769
Support PUBREC reason code >=0x80 as partial qos2 flow.
2019-01-09 15:00:12 +00:00
Roger A. Light
aeba5b5d0d
Fix and tests for client side receive-maximum.
2019-01-09 12:21:15 +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 Light
67c1d4453e
Receive maximum support for clients.
2019-01-08 14:24:41 +00:00
Roger Light
0546e7bebc
Add mosquitto_int_option and mosquitto_void_option
...
This deprecates mosquitto_opts_set().
2019-01-08 14:21:02 +00:00
Roger A. Light
16e83bfe5d
Process receive maximum (as max_inflight_messages).
2018-12-30 21:53:50 +00:00
Roger A. Light
659cd2a3b1
Read reason code for PUBREC/PUBREL.
2018-12-23 21:49:39 +00:00
Roger A. Light
7c3666d593
Subscription identifier support.
2018-12-20 15:32:43 +00:00
Roger A. Light
fcf4cd0b27
Merge branch 'master' into mqtt5
2018-12-19 14:11:11 +00:00
Roger A. Light
94fdc9cb44
Disallow UTF-8 control characters.
2018-12-18 10:15:28 +00:00
Roger A. Light
bc1349c0d7
Tests for user facing mosquitto_string_to_property_info function.
2018-12-14 19:31:49 +00:00
Roger A. Light
db7901884f
Retain-as-published support.
2018-12-14 13:36:02 +00:00
Roger A. Light
4933f889ff
Fix missing header.
2018-12-14 12:56:49 +00:00
Roger A. Light
a8ca5c83af
Bump version.
2018-12-11 11:13:09 +00:00
Roger A. Light
afe011866c
Remove unused variables.
2018-12-11 10:55:42 +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
f90ba23738
Retain handling support.
2018-12-06 22:25:45 +00:00
Roger A. Light
4fe75b1af0
Make user functions for reading properties easier to use.
2018-12-06 16:59:53 +00:00
Roger A. Light
73c46174f8
Don't call on_disconnect() twice if keepalive tests fail.
...
Closes #1067 . Thanks to xingchen02.
Bug: https://github.com/eclipse/mosquitto/issues/1067
2018-12-06 10:45:57 +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
29846d282d
Client library now reads its assigned client id.
2018-12-05 21:58:31 +00:00
Roger A. Light
fda66e8311
Add broker test for assigned client id.
2018-12-05 20:26:43 +00:00
Tamaki Nishino
d07864939a
Check SSL_DATA_PENDING in mosquitto_loop_read()
...
Signed-off-by: Tamaki Nishino <otamachan@gmail.com>
2018-12-05 11:39:50 +00:00
Roger A. Light
5d02f58151
Fix reconnect delay backoff behaviour.
...
Closes #1027 . Thanks to Harm Verhagen.
Bug: https://github.com/eclipse/mosquitto/issues/1027
2018-12-04 17:19:31 +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
867fe80e0e
Properties are now freed after the callback.
2018-11-29 16:51:48 +00:00
Roger A. Light
1b854e250e
Function for copying property lists.
2018-11-28 17:09:17 +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
0123ff1efe
Rename *_with_properties() -> *_v5().
2018-11-22 18:55:04 +00:00
Roger Light
f809ecbcbe
Add DISCONNECT handling to library.
2018-11-22 18:13:18 +00:00
Roger Light
236e967161
Pass properties when disconnecting clients.
2018-11-22 18:09:31 +00:00
Roger Light
f7dc097f82
Move client disconnect code to own function.
2018-11-22 17:31:17 +00:00
Roger Light
3cb8a52ef3
Add reason code to mosquitto_disconnect_with_properties()
2018-11-22 16:56:17 +00:00
Roger Light
14c2f528cf
Add reason code to send__disconnect().
2018-11-22 16:52:39 +00:00
Roger A. Light
d64ce2e242
Make mosquitto_reason_string public.
2018-11-22 10:17:16 +00:00
Roger A. Light
94631ae68b
Don't free properties any more, we use them.
2018-11-20 17:54:44 +00:00
Roger A. Light
59b3fdfdf8
Add client property value reading functions.
2018-11-20 17:54:26 +00:00
Roger A. Light
158189393e
Add v5 client callbacks.
2018-11-20 14:36:18 +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
e81db23ce4
Bump version number.
2018-11-08 12:12:27 +00:00
Roger A. Light
71b8c4d892
Fix TLS connections when using an external event loop.
...
Affects the use of mosquitto_loop_read() and mosquitto_write().
Closes #990 .
2018-11-07 21:08:10 +00:00
Iblis Lin
0368a8c01d
add socket headers for FreeBSD
...
Signed-off-by: Iblis Lin <iblis@hs.ntnu.edu.tw>
2018-11-07 10:28:26 +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
f77c1ca91b
private struct mqtt5__property -> public mosquitto_property.
2018-11-01 23:50:54 +00:00
Roger A. Light
f9e0fa246a
Validate properties coming into client library.
2018-11-01 18:53:06 +00:00
Roger A. Light
8aa936936e
Library and client support for topic-alias.
2018-11-01 15:47:21 +00:00
Roger A. Light
de3a9af1f7
Client+library support for unsubscribe properties.
2018-11-01 14:12:52 +00:00
Roger A. Light
741a8a9cc3
Client disconnect property support, plus disconnect packet fix.
2018-11-01 11:57:47 +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
b462115fa6
Add reason code to PUBACK/REC/REL/COMP.
2018-10-31 08:24:28 +00:00
Roger A. Light
ba874c6014
Merge branch 'mqtt5' of gitlab.com:ralight/mosquitto-private into mqtt5
2018-10-30 14:58:57 +00:00
Roger A. Light
446ad6290a
Add mosquitto_string_to_property_info.
2018-10-30 11:54:36 +00:00
Roger A. Light
c19b3598c0
Add mosquitto_string_to_command.
2018-10-30 11:40:06 +00:00
Roger A. Light
63a479564b
Add mosquitto_property_command_check()
2018-10-30 11:32:37 +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
be5602be28
Add sections to mosquitto.h.
2018-10-30 10:03:08 +00:00
Roger A. Light
5aa983c210
Fix copy/paste error.
2018-10-25 20:41:34 +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