Commit Graph

695 Commits (debian)

Author SHA1 Message Date
Roger A. Light b2c0c3d573 Handle DISCONNECT with will. 7 years ago
Roger A. Light c506c8335b Will delay tests and implementation. 7 years ago
Roger A. Light 5aabc171b0 Merge branch 'mqtt5' into develop 7 years ago
Roger A. Light e862a047a8 Rework TLS engine support. 7 years ago
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>
7 years ago
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>
7 years ago
Roger A. Light f4e24f9524 Use higher resolution timer for random client id generation. 7 years ago
Roger A. Light 1d17ced449 Broker configurable max_packet_size
Plus tests.
7 years ago
Roger A. Light 8fb4ad48b5 Strings for new error codes. 7 years ago
Roger A. Light b9b8e0ff2a Add client support for outgoing maximum packet size. 7 years ago
Roger A. Light 1877f8a326 Tests and implementation for maximum packet size.
This is for broker outgoing connack and publish packets only.
7 years ago
Roger A. Light 66c1e2ccf0 Add mosquitto_unsubscribe_multiple(), plus tests. 7 years ago
Roger A. Light 458a9840ad Bump version for test release. 7 years ago
Roger A. Light bb72cf9088 Bump version number, update webpage. 7 years ago
Roger A. Light f9f3fdbfe3 Fix pattern matching test. 7 years ago
Roger A. Light 084062c85e Merge branch 'fixes' into mqtt5 7 years ago
Roger A. Light b6dc4e5780 Fix datatype_read test. 7 years ago
Roger A. Light bb914b985c Fix `mosquitto_topic_matches_sub()` rc with sub=="topic/#abc".
This now returns MOSQ_ERR_INVAL as expected.
7 years ago
Roger A. Light e72d1d6ff5 Fix `mosquitto_topic_matches_sub()` rc with sub=="topic/#abc".
This now returns MOSQ_ERR_INVAL as expected.
7 years ago
Roger A. Light 1b5c900e77 Update CVE details and bump version number. 7 years ago
Roger A. Light 7ff9c3763b Fix socks build when using cmake. 7 years ago
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.
7 years ago
Roger A. Light d6a690aa8d Fix Will not being sent for Websockets clients.
Closes #1143. Thanks to salcedo.
7 years ago
Roger A. Light ab8b57ff54 Allow broker to always restart on Windows when using `log_dest file`.
Closes #1080. Thanks to lcouz.
7 years ago
Roger Light 5236295159 Handle mismatched handshakes properly.
For example, a QoS1 PUBLISH with QoS2 reply.
7 years ago
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>
7 years ago
Roger A. Light e8320cbf19 Fix TLS connections not working over SOCKS.
Thanks to Mark Oeltjenbruns.
7 years ago
Roger A. Light be9c1071b0 Fix compilation when openssl deprecated APIs are not available.
Closes #1094. Thanks to Rosen Penev.
7 years ago
Roger A. Light 70c4097b6f Fix comparison of boolean values in CMake build.
Closes #1101. Thanks to Mojca Miklavec and Andrew L. Moore.
7 years ago
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>
7 years ago
Roger A. Light e1976739b8 Fix duplicate error values.
Closes #1109. Thanks to Tifaifai.
7 years ago
Roger A. Light ca3782b38d Test and fixes for will message expiry interval. 7 years ago
Roger A. Light 6a59e92db8 Set remaining message expiry interval when republishing. 7 years ago
Roger A. Light f9a17e2782 Add alias support to the broker. 7 years ago
Roger Light 8513af4da5 Tests and fixes for shortened DISCONNECT packets. 7 years ago
Roger Light 4b97a90ef9 Tests and fixes for truncated PUB* packets
For the cases where reason_code is 0, or properties are missing.
7 years ago
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.
7 years ago
Roger Light 930a314caf Add reason_code to on_publish_v5 callback. 7 years ago
Roger Light 740a128769 Support PUBREC reason code >=0x80 as partial qos2 flow. 7 years ago
Roger A. Light aeba5b5d0d Fix and tests for client side receive-maximum. 7 years ago
Roger Light 84660e1cbe Send maximum limits for QoS>0.
This needs more work on the broker front to simplify the design.
7 years ago
Roger Light 67c1d4453e Receive maximum support for clients. 7 years ago
Roger Light 0546e7bebc Add mosquitto_int_option and mosquitto_void_option
This deprecates mosquitto_opts_set().
7 years ago
Roger A. Light 16e83bfe5d Process receive maximum (as max_inflight_messages). 7 years ago
Roger A. Light 659cd2a3b1 Read reason code for PUBREC/PUBREL. 7 years ago
Roger A. Light 7c3666d593 Subscription identifier support. 7 years ago
Roger A. Light fcf4cd0b27 Merge branch 'master' into mqtt5 7 years ago
Roger A. Light 94fdc9cb44 Disallow UTF-8 control characters. 7 years ago
Roger A. Light bc1349c0d7 Tests for user facing mosquitto_string_to_property_info function. 7 years ago
Roger A. Light db7901884f Retain-as-published support. 7 years ago
Roger A. Light 4933f889ff Fix missing header. 7 years ago
Roger A. Light a8ca5c83af Bump version. 7 years ago
Roger A. Light afe011866c Remove unused variables. 7 years ago
Roger A. Light a00dd29af8 Fix building where TLS-PSK is not available.
Closes #68.
7 years ago
Roger A. Light f90ba23738 Retain handling support. 7 years ago
Roger A. Light 4fe75b1af0 Make user functions for reading properties easier to use. 7 years ago
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
7 years ago
Roger A. Light 6ef2c79e9a Add max_keepalive, for limiting keepalives of MQTT v5 clients. 7 years ago
Roger A. Light 29846d282d Client library now reads its assigned client id. 7 years ago
Roger A. Light fda66e8311 Add broker test for assigned client id. 7 years ago
Tamaki Nishino d07864939a Check SSL_DATA_PENDING in mosquitto_loop_read()
Signed-off-by: Tamaki Nishino <otamachan@gmail.com>
7 years ago
Roger A. Light 5d02f58151 Fix reconnect delay backoff behaviour.
Closes #1027. Thanks to Harm Verhagen.

Bug: https://github.com/eclipse/mosquitto/issues/1027
7 years ago
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
7 years ago
Roger A. Light 867fe80e0e Properties are now freed after the callback. 7 years ago
Roger A. Light 1b854e250e Function for copying property lists. 7 years ago
Roger A. Light d5108956bf Process session-expiry-interval on CONNECT and DISCONNECT.
Add test to check for invalid values.
7 years ago
Roger A. Light 54db895cb3 Rename clean_session to clean_start for v5. 7 years ago
Roger A. Light 0123ff1efe Rename *_with_properties() -> *_v5(). 7 years ago
Roger Light f809ecbcbe Add DISCONNECT handling to library. 7 years ago
Roger Light 236e967161 Pass properties when disconnecting clients. 7 years ago
Roger Light f7dc097f82 Move client disconnect code to own function. 7 years ago
Roger Light 3cb8a52ef3 Add reason code to mosquitto_disconnect_with_properties() 7 years ago
Roger Light 14c2f528cf Add reason code to send__disconnect(). 7 years ago
Roger A. Light d64ce2e242 Make mosquitto_reason_string public. 7 years ago
Roger A. Light 94631ae68b Don't free properties any more, we use them. 7 years ago
Roger A. Light 59b3fdfdf8 Add client property value reading functions. 7 years ago
Roger A. Light 158189393e Add v5 client callbacks. 7 years ago
Roger A. Light 098a1c8ecf Fix subscribe_multiple datatypes. 7 years ago
Roger A. Light beb96c6b8b Merge branch 'master' into develop 7 years ago
Roger A. Light e81db23ce4 Bump version number. 7 years ago
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.
7 years ago
Iblis Lin 0368a8c01d add socket headers for FreeBSD
Signed-off-by: Iblis Lin <iblis@hs.ntnu.edu.tw>
7 years ago
Bartosz Taczała e86b27a2da Adding support for QNX7.0.0
Change-Id: Id01e2880aa5cadc0e93a46b95fe675e1938051fa
Signed-off-by: Bartosz Taczała <bartosz.taczala@mobica.com>
7 years ago
Roger A. Light f77c1ca91b private struct mqtt5__property -> public mosquitto_property. 7 years ago
Roger A. Light f9e0fa246a Validate properties coming into client library. 7 years ago
Roger A. Light 8aa936936e Library and client support for topic-alias. 7 years ago
Roger A. Light de3a9af1f7 Client+library support for unsubscribe properties. 7 years ago
Roger A. Light 741a8a9cc3 Client disconnect property support, plus disconnect packet fix. 7 years ago
Roger A. Light 383608613a Client+lib will property support. 7 years ago
Roger A. Light 12cba75c73 Client support for adding properties. 7 years ago
Roger A. Light b462115fa6 Add reason code to PUBACK/REC/REL/COMP. 7 years ago
Roger A. Light ba874c6014 Merge branch 'mqtt5' of gitlab.com:ralight/mosquitto-private into mqtt5 7 years ago
Roger A. Light 446ad6290a Add mosquitto_string_to_property_info. 7 years ago
Roger A. Light c19b3598c0 Add mosquitto_string_to_command. 7 years ago
Roger A. Light 63a479564b Add mosquitto_property_command_check() 7 years ago
Roger A. Light 636e813d1c Load of constant renames ahead of making mqtt_protocol.h public. 7 years ago
Roger A. Light 9eebcf6704 Rename property__free_all->mosquitto_property_free_all
Make public function.
7 years ago
Roger A. Light be5602be28 Add sections to mosquitto.h. 7 years ago
Roger A. Light 5aa983c210 Fix copy/paste error. 7 years ago
Roger A. Light b6c667689d Write properties for all commands apart from AUTH. 7 years ago
Roger A. Light 8077376a79 Add read support for AUTH packets. 7 years ago
Roger A. Light ca40255720 mid == 0 is a protocol error. 7 years ago
Roger A. Light eefa7f7604 All existing commands read properties. 7 years ago
Roger A. Light 723d9c2782 Check whether properties are on the correct commands. 7 years ago
Roger A. Light 267178bd99 User properties are copied from PUBLISH to PUBLISH. 7 years ago
Roger A. Light 0baf358cf8 Add properties member to will struct. 7 years ago
majekw 7f1419e4de Fix mosquitto_pub -l if compiled using cmake.
Since dde005ef92 mosquito_pub is throwing error
that 'threading support has not been compiled' when compiled using cmake.
It looks like WITH_THREADING flag is not set at top level Makefile and used
only in lib/ directory, so library is correctly compiled with threading.
But for client this flag is undefined, so it gives error on '-l' option.

This commit moves part related to WITH_THREADING flag out of lib/CMakeLists.txt
to top levele CMakeLists.txt, so it could be accessible to all subdirectories.

Signed-off-by: Marek Wodzinski <majek@w7i.pl>
7 years ago
Roger A. Light 0a9ee5b4cf Fix memory leak when reconnecting with TLS errors.
Fix memory leak that occurred if mosquitto_reconnect() was used when TLS
errors were present.

Closes #592. Thanks to smartdabao and aaronovz1.
7 years ago
Roger A. Light 35dea07dcd Merge branch 'master' 7 years ago
Roger A. Light 40ed672ecf Fix topic matching tests and function. 7 years ago
Roger A. Light 77099bb58c Add property write tests. 7 years ago
Roger A. Light 4daaaaf4a7 Add property writing support, untested. 7 years ago
Roger A. Light 262ac3fb5b Fix varint length reporting. 7 years ago
Roger A. Light 6609bbac10 Move topic matching tests to unit tests. Needs improving. 7 years ago
Roger A. Light c0ff424082 Add property__get_length_all() and property__get_length().
For getting the number of bytes needed for writing a property list.
7 years ago
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.
7 years ago
Roger A. Light e5eb03b2e6 Allow building without shared library. 7 years ago
Roger A. Light abb3fee1f8 Coverage reporting for whole broker. 7 years ago
Roger A. Light 8e793f68e1 Simplify prop validation. 7 years ago
Roger A. Light bc1caedc32 Some property string read tests. 7 years ago
Roger A. Light f59526a014 Property read in16 tests. 7 years ago
Roger A. Light e14b613a02 Property read int32 tests. 7 years ago
Roger A. Light f4b2838574 Property reading, and tests for byte properties. 7 years ago
Roger A. Light 05b40b90db Add reason strings. 7 years ago
Roger A. Light 75b6851c76 Property identifer is a varint. 7 years ago
Roger A. Light 572be268e5 Fix signedness of varint reading. 7 years ago
Roger A. Light 366744bad7 Fix subscribe_multiple datatypes. 7 years ago
Roger A. Light c9d9ad8e72 UTF-8 validation tests and fixes. 7 years ago
Roger A. Light 72131c84ce Binary data read functions and tests. 7 years ago
Roger A. Light debf7493ad UTF-8 validation tests and fixes. 7 years ago
Roger A. Light 400db91166 Handle UTF-8 validation in packet__read_string. 7 years ago
Roger A. Light b6b8da1fa6 Variable Byte Integer reading tests. 7 years ago
Roger A. Light 99a1c0e43a Move simple datatype reading functions to own file.
This facilitates easier testing.
7 years ago
Roger A. Light 1488992ea8 Naive reading of MQTT 5 properties. No processing done. 7 years ago
Roger A. Light 17b3709790 Fix varint reading. 7 years ago
Roger Light 6c9e8d51c2 Merge branch 'develop' into mqtt5 7 years ago
Roger A. Light 1867f30785 Merge branch 'master'
Conflicts:
	ChangeLog.txt
7 years ago
Roger A. Light cf9a72d8db Add mosquitto_subscribe_multiple. 7 years ago
Roger A. Light c78003cacf Bump version number, add CVE details. 7 years ago
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.
7 years ago
Roger A. Light 59bd07627d Various build improvements to help packaging. 7 years ago
Roger A. Light dd0e0d91b0 Fix build on Windows. 7 years ago
Roger A. Light 3f87232065 Bump version number. 7 years ago
Roger A. Light 4ee6941188 Primitive v5 CONNACK support - no properties. 7 years ago
Roger A. Light 561513fdd4 Very simple v5 CONNECT support - no properties. 7 years ago
Roger A. Light ccc97d8c96 Function for reading variable length ints from packet. 7 years ago
Roger A. Light 33a523eea9 Add identifiers for v5.
Clients know about v5, just need library support...
7 years ago
Roger A. Light a127c93a5a Property identifiers. 7 years ago
Roger A. Light 99c6ec7f6e Protocol name will never be changed from MQTT. 7 years ago
Roger A. Light 5dc88fe8f3 Add v5 return codes 7 years ago
Roger A. Light 0bacff11df Rename mqtt3_protocol.h -> mqtt_protocol.h. 7 years ago
Roger A. Light 48f096bc1c Read/write new 32 bit ints from packets. 7 years ago
Michael Heimpold a459e93498 Install pkg-config files also for non-CMake builds
At the moment, pkg-config hint files are only installed when CMake is
used as build system. However, it is very convenient for programs using
libmosquitto to have these files always in place, so let's add it
here, too.

Signed-off-by: Michael Heimpold <michael.heimpold@i2se.com>
7 years ago
Fredrik Fornwall 915e91d9be Fix build with OPENSSL_NO_ENGINE
Signed-off-by: Fredrik Fornwall <fredrik@fornwall.net>
7 years ago
Roger A. Light ae45bd3d40 Update changelog and fixes to #927 PR. 7 years ago
yzhivik 96e62d596f fix SOCKS5 username and password set
fix SOCKS5 request wrt IP4/IP6/FQDN

Signed-off-by: yzhivik <yuriy.zhyvytsya@gmail.com>
7 years ago
Roger A. Light a9da3c263d Bump version number.
Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light 4ccc68d2df Revert incorrect change. 7 years ago
Roger A. Light 9d30625622 Build fix for Windows. 7 years ago
Roger A. Light 88765a5e80 Consistent use of config.h across the project. 7 years ago
Roger A. Light a199cac69e Don't confuse expiring and duplicate clients. 7 years ago
Roger A. Light 0ec090f31a Fixes for building on FreeBSD. 7 years ago
Roger A. Light 10b19a42ed Fixes for building on NetBSD.
Closes #258.

Thanks to Daniel Ölschlegel.
7 years ago
Roger A. Light c757cb0912 Remove incorrect comment. 7 years ago
Roger A. Light e185d18917 Better fix for #851.
Ensure all sockets that are closed are set to INVALID_SOCKET.

Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light 7f0b4d6271 Fix connection problems when using mosquitto_connect_async().
The connection wouldn't always complete if mosquitto_loop_start() was
called before mosquitto_connect_async(). Closes #848.

Thanks to Ian Gough.

Bug: https://github.com/eclipse/mosquitto/issues/848

Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light 575dce91f0 Fix segfault on startup if bridge CA certificates could not be read.
Closes #851.

Thanks to chelliwell.

Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light 4bacbecb1b Fix some places where return codes were incorrect.
Closes #850.

Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light bcf76b9cb6 Remove use of AI_ADDRCONFIG.
Closes #869, #901.

Thanks to Alex Richman.

Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light 286400abcf Use AF_UNSPEC etc. instead of PF_UNSPEC to comply with POSIX.
Closes #863.

Thanks to denigmus and Patrick TJ McPhee.

Signed-off-by: Roger A. Light <roger@atchoo.org>
7 years ago
Roger A. Light 5e60136449 Merge branch 'develop' 8 years ago
Roger A. Light e9d03c8ffd Merge branch 'fixes' 8 years ago
Roger A. Light 84520296fa Bump version number. 8 years ago
Roger A. Light e90a32835b Merge branch 'fixes' into develop 8 years ago
Roger A. Light 8410a19335 Add fallback case for libressl. 8 years ago
Roger A. Light 6c7ecd7e97 Fix compiling without TLS. 8 years ago
Roger A. Light 79a7b36d20 Don't derefence a null message. 8 years ago
Roger A. Light b2bb48ac2b Reference counting for openssl 1.0.2. 8 years ago
Roger A. Light 57ee8b92bc Mac build fixes. 8 years ago
Roger A. Light 574fb36ede More utf-8 validation. 8 years ago
Thomas Beckmann (M-Way) ee610ab19a _mosquitto_net_read must call WSASetLastError when changing errno so that the error code can be picked up by _mosquitto_packet_read
Signed-off-by: Thomas Beckmann (M-Way) <t.beckmann@mwaysolutions.com>
8 years ago
Roger A. Light e961bc9301 Comment to aid init_ssl_ctx understanding. 8 years ago
Roger A. Light 6a2172f472 Windows fixes. 8 years ago
Roger A. Light 2d9fab123e Use SSL_CTX_up_ref() with MOSQ_OPT_SSL_CTX*.
This limits the use of those options to openssl 1.1.0 and greater.
8 years ago
Roger A. Light b649799c78 Protect mosq->ssl_ctx against double initialisation. 8 years ago
Roger A. Light 9852f94ee0 Merge branch 'sub_client_timeout_upstream' of git://github.com/I2SE/mosquitto into I2SE-sub_client_timeout_upstream 8 years ago
Roger A. Light 943b311344 Don't use deprecated openssl functions. 8 years ago
Roger A. Light c95f24c342 Missing includes. 8 years ago
Roger A. Light 24d68b5af8 Remove support for openssl 1.0.0 and 1.0.1.
These are no longer supported by openssl.
8 years ago
Roger A. Light 8470ca89b9 Add MOSQ_OPT_SSL_CTX and MOSQ_OPT_SSL_CTX_WITH_DEFAULTS options.
Closes #567 and #715.
8 years ago
Roger A. Light 615d6a2c41 Remove unused file. 8 years ago
Roger A. Light f4d238be18 Bump copyright years. 8 years ago
Roger A. Light 28dd14fcea Separate out functions from mosquitto.c to aid discoverability. 8 years ago
Roger A. Light ff79432364 C++ on_connect_with_flags() support. 8 years ago
Roger A. Light 86ced4d98f Add mosquitto_connect_with_flags_callback_set().
This allows a second connect callback to be used that exposes the
MQTT connect flags parameter.

Closes #738, #128.
8 years ago
Thomas Beckmann (M-Way) 8e3c2d9af7 _mosquitto_net_read must call WSASetLastError when changing errno so that the error code can be picked up by _mosquitto_packet_read
Signed-off-by: Thomas Beckmann (M-Way) <t.beckmann@mwaysolutions.com>
8 years ago
Roger A. Light 40e6a75709 Use c99 as compiling standard.
Closes: #765.
8 years ago
Viktor Gotwig e90afb8526 Adding tls host name extension (SNI)
Signed-off-by: Viktor Gotwig <viktor.gotwig@q-loud.de>
8 years ago
Roger A. Light 5b2bf3d1c1 Bump version number, update copyrights. 8 years ago
Roger A. Light e6cbff0e94 Fix unauthorised clients being able to cause OOM on connect. 8 years ago
Roger A. Light 927c5d311b Fix missing headers on mac. 8 years ago
Roger A. Light 81cb7ab547 Merge branch 'fixes' into develop 8 years ago
Roger A. Light 9750d1732a Fix builds on travis. 8 years ago
Roger A. Light c001e778c1 [693] Fix handling of null bytes in received strings.
Thanks to Umberto Boscolo.

Bug: https://github.com/eclipse/mosquitto/issues/693
8 years ago
Roger A. Light 1b702538f9 Add check and matches functions which take length arguments.
mosquitto_pub_topic_check2()
mosquitto_sub_topic_check2()
mosquitto_topic_matches_sub2()
8 years ago
Roger A. Light 3066f89a24 packet__read_string() returns the string length. 8 years ago
JonoJensen 7d8d04bc39 Fix issue when SSL_connect() returns SSL_ERROR_WANT_READ. A call to SSL_write here will later transmit a new client hello and make ssl connection fail.
Signed-off-by: JonoJensen <jono.jensen@yahoo.se>
8 years ago
Michael Heimpold 26a81747cd mosquitto_loop_forever: use nanosleep instead of sleep
The advantage of nanosleep(2) is, that -according to POSIX spec- it does not
interact with signals as sleep(3) does. So it is not affected when used by a
program which is e.g. using alarm(3).

Signed-off-by: Michael Heimpold <michael.heimpold@i2se.com>
8 years ago
Roger A. Light b02c1a41bb [670] Fix topic matching of foo/bar against foo/+/#
Thanks to mrdis.

Bug: https://github.com/eclipse/mosquitto/issues/670
8 years ago
Roger A. Light 9c6a5f3cf0 [656] Fix building on Windows.
Thanks to Arun Kirthi Cherian.

Bug: https://github.com/eclipse/mosquitto/issues/656
8 years ago
Pierre Fersing 254f30cdb1 Fix mosquitto_want_write for TLS sock connecting
Copied logic from mosquitto_loop which was already patched by
39ffd6fa.

Bugs: #648
8 years ago
Roger A. Light b193918ca0 [649] Don't close socket again if nonblock fails.
Thanks to Edwin van den Oetelaar.

Bug: https://github.com/eclipse/mosquitto/issues/649
8 years ago
Roger A. Light ae666b07ce [654] Initialise "result" in mosquitto_topic_matches_sub.
Thanks to markhermelinggt.

Bug: https://github.com/eclipse/mosquitto/issues/654
8 years ago
Michael Heimpold 48dec391f7 Quote ${DESTDIR} usage in various Makefiles
This prevents failures during make install when whitespace
is part of DESTDIR pathname.

Signed-off-by: Michael Heimpold <michael.heimpold@i2se.com>
8 years ago
Roger A. Light b11855821e Update UTF-8 validation checks. 8 years ago
toast-uz df9ad5f0bd Add Epoll. (#495)
Signed-off-by: Tatsuzo Osawa <tatsuzo.osawa@gmail.com>
8 years ago
Roger A. Light 124ee1af91 [490] Further fix for auth related crashes.
Bug: https://github.com/eclipse/mosquitto/issues/490
8 years ago
Roger A. Light 22063013be [490] Fix auth plugin+WS client+MOSQ_ERR_AUTH related crash.
Thanks to "hasunperera".

Bug: https://github.com/eclipse/mosquitto/issues/490
8 years ago
Roger A. Light 5a267368d7 Merge branch 'master' into develop 8 years ago
Aska.Wu d40d7772d3 Fix the TLS handshake problem if PSK has leading zero
Incorrect psk will be provided by psk_server_callback() because leading zero
is skipped by BN_bn2bin() and BN_num_bytes().

Signed-off-by: Aska.Wu <askawu@gmail.com>
8 years ago
Roger A. Light d8cc5bc4fe Merge branch 'fixes' of github.com:eclipse/mosquitto into fixes 8 years ago
Zard1096 5b73897f98 Fix iOS crash issues
Relate to issues #327 and #63.
mosq->sock may be closed before FD_SET(mosq->sock, &writefds) and
FD_ISSET(mosq->sock, &writefds) but after judgement in line 947
if(mosq->sock != INVALID_SOCKET). FD_SET(-1, ...) and FD_ISSET(-1, ...)
would certainly crash.

Signed-off-by: Zard1096 <mr.zardqi@gmail.com>
8 years ago
Roger A. Light e74203de2c Merge branch 'master' into develop 8 years ago
Roger A. Light 1fa4d74278 Bump version number. 8 years ago
Dr. Lars Voelker 74adb43cc1 Adding OCSP Stapling support to mosquitto
Adding OCSP Stapling support to mosquitto, so that the TLS client side
requests the certificate status and checks it.
This code uses the OpenSSL-based OCSP implementation and is somewhat
based on the libcurl code for OCSP stapling.

Signed-off-by: Dr. Lars Voelker <lars.voelker@bmw.de>
8 years ago
Roger A. Light 6b351ce0f1 Bump version number. 8 years ago
Roger A. Light 2d90a1f45b Fix umask value. 8 years ago
Roger A. Light 94978ac89b Restore old umask after creating file. 8 years ago
Roger A. Light 6e7d02ba16 Fix for CVE-2017-9868 for Windows. 8 years ago
Roger A. Light 326983d35e [417] Fix lazy bridges not timing out for idle_timeout.
Thanks to spinachmedia.

Bug: https://github.com/eclipse/mosquitto/issues/417
8 years ago
Roger A. Light c07ba2a3da Experimental fix for poor websockets performance. 8 years ago
Jan Lukavsky 621f18d696 #419 Broker sometimes kills connection to client
Signed-off-by: Jan Lukavsky <je.ik@seznam.cz>
8 years ago
Roger A. Light b61fefcf08 Merge branch 'master' into develop 8 years ago
Roger A. Light 2897f71aba Bump version number. 8 years ago
Jelle van der Waa ab266e7f5f lib: fix OpenSSL 1.1 deprecation warning for ERR_remove_state
ERR_remove_state has been marked deprecated in OpenSSL 1.1.0 and do
nothing, as the OpenSSL libraries now normally do all thread
initialization and deinitialisation automatically.

Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl>
9 years ago
Roger A. Light 91b308a11d Merge branch 'master' into develop 9 years ago
Roger A. Light ac981782db Fix typo and use net__print_ssl_error() as available. 9 years ago
Jiří Pinkava cd0985c3e2 Log more TLS error details
Signed-off-by: Jiří Pinkava <j-pi@seznam.cz>
9 years ago
Roger A. Light bda9893713 Version bump. 9 years ago
Roger A. Light 433ee5c4d6 [344] Don't compile in async dns support by default for makefiles. 9 years ago
Roger A. Light 6f45ab9624 [344] Only do async dns on glibc. 9 years ago
Roger A. Light 5eae4b56d6 [344] More leak fixes. 9 years ago
Roger A. Light e0e8cc9f3e [344] Fix leaks and incorrect connect call. 9 years ago
Roger A. Light e13af18ed9 Start of fix for [344]. 9 years ago
Fredrik Fornwall 35cc1eb21e Check for rt and pthread libraries before linking
This fixes building on Android which does not have separate librt
or libpthread libraries.

Signed-off-by: Fredrik Fornwall <fredrik@fornwall.net>
9 years ago
Roger A. Light b5b5e6f27d Don't use reserved identifiers in public headers. 9 years ago
Jens Breitbart b9d4ebfba3 Fix compiler warnings (unused parameter, additional semicolon).
A modern version of the clang compiler complained about:
* unused parameters
* additional semicolon
. This commit fixes these warnings.

Signed-off-by: Jens Breitbart <jbreitbart@gmail.com>
9 years ago
Roger A. Light 8e4a80a928 [329] Fix potential negative timeout being passed to pselect.
Thanks to Dollars.

Bug: https://github.com/eclipse/mosquitto/issues/329
9 years ago
Teun Lassche 4dc96a2533 Fix #304 Socket leakage
Signed-off-by: Teun Lassche <contact@thlassche.nl>
9 years ago
Roger A. Light 98ea684906 [323] Allow outgoing IPv6 connections to use TLS.
Bug: https://github.com/eclipse/mosquitto/issues/323
9 years ago
Roger A. Light 9f32d5c0ac Version bump. 9 years ago
Roger A. Light e4e81a0fb1 [111] Add mosquitto_userdata function to libmosquitto.
This allows retrieving mosq->userdata.

Bug: https://github.com/eclipse/mosquitto/issues/111
9 years ago
Roger A. Light f0485d1398 [344] Don't compile in async dns support by default for makefiles. 9 years ago
Roger A. Light 3d40ffe18b [344] Only do async dns on glibc. 9 years ago
Roger A. Light ee543a25f5 [344] More leak fixes. 9 years ago
Roger A. Light f464970fcf [344] Fix leaks and incorrect connect call. 9 years ago
Roger A. Light ef7a230365 Start of fix for [344]. 9 years ago
Fredrik Fornwall 532273250c Check for rt and pthread libraries before linking
This fixes building on Android which does not have separate librt
or libpthread libraries.

Signed-off-by: Fredrik Fornwall <fredrik@fornwall.net>
9 years ago
Roger A. Light ef417a6688 Don't use reserved identifiers in public headers. 9 years ago
Jens Breitbart fbb60d67a7 Fix compiler warnings (unused parameter, additional semicolon).
A modern version of the clang compiler complained about:
* unused parameters
* additional semicolon
. This commit fixes these warnings.

Signed-off-by: Jens Breitbart <jbreitbart@gmail.com>
9 years ago
Roger A. Light 2c2ba2cf10 [329] Fix potential negative timeout being passed to pselect.
Thanks to Dollars.

Bug: https://github.com/eclipse/mosquitto/issues/329
9 years ago
Teun Lassche dac29a5a5f Fix #304 Socket leakage
Signed-off-by: Teun Lassche <contact@thlassche.nl>
9 years ago
Roger A. Light 6f7a0bff4b [323] Allow outgoing IPv6 connections to use TLS.
Bug: https://github.com/eclipse/mosquitto/issues/323
9 years ago
Karl Palsson c6aac741c2 broker: support byte based queueing
Limiting queued message depth purely based on message count is hard to
control for memory constrained devices.  The size of messages can vary
wildly, from a few bytes, to a few kilobytes.  Support a new
max_queued_bytes option, and drop packets when the first limit is
reached.  Option defaults to 0 (disabled) by default.
Support also a max_inflight_bytes variable, with similar behaviour.

Fixes (partof) https://github.com/eclipse/mosquitto/issues/100

This pulls up some helper routines for calculating whether to allow
inflight or queuing, resolving some inconsistences in connection
resumption.

Signed-off-by: Karl Palsson <karlp@etactica.com>
9 years ago
Roger A. Light 87b6a746fd Bump version number. 9 years ago
Roger A. Light 79cc06b180 [237] Fix memory leak when verifying a server certificate.
Only for certificates with a subjectAltName. Closes #237.

Thanks to MrSaturday.

Bug: https://github.com/eclipse/mosquitto/issues/237
9 years ago
Roger A. Light 017db6706f Rename mosquitto_broker.h -> mosquitto_broker_internal.h 9 years ago
Roger A. Light 8378fe44cf Update copyrights. 9 years ago
jbwdevries 1c90a4487c Fixes a bug where the C++ wrapper would always claim SOCKS was not supported. (#198)
The WITH_* flags are not handed over to the C++ wrapper, instead it relies on
the actual library to check status.

Signed-off-by: Johan de Vries (Ubuntu VM) <devries@wivion.nl>
9 years ago
Roger A. Light 1c3988a397 Merge branch 'master' into develop 9 years ago
Roger A. Light a8a5daf06b Check client topic inputs for valid UTF-8. 9 years ago
Roger A. Light fa2d3143a4 Separate the C and C++ static libraries. 9 years ago
Roger A. Light 2286caaca2 Merge branch 'enhance-bare-makefile-static-library-build' of https://github.com/Lance0312/mosquitto into Lance0312-enhance-bare-makefile-static-library-build 9 years ago
Roger A. Light d90cd585dd Add WITH_STRIP build option. 9 years ago
Roger A. Light 2d0af7309f Bump version number. 9 years ago
Roger A. Light 30686f2dc9 Fix mosquitto_topic_matches_sub(). 9 years ago
Lance Chen 5ccd0dbb80
Add an build option to control building static libraries or not
The option WITH_STATIC_LIBRARIES is default to yes

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Lance Chen 97847fa95b
Rename option BUILD_STATIC_LIBRARY to WITH_STATIC_LIBRARIES
to conform to the bare Makefiles

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Lance Chen 4b4817c3f0
Build the CPP static library with bare Makefiles
In order to make the CPP static library include all
objects from the C static library, the list of objects
(MOSQ_OBJS) is isolated into objects.mk to be used for
building the C and CPP static libraries.

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Lance Chen a9b7237d09
Install/Uninstall the C static library
Symbol stripping is done explicitly with strip command,
since stripping with install command removes too many
symbols, making the result library unusable.

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Roger A. Light c035913b2a [180] Fix #includes in lib/send_mosq.c
Ensures that LWS_LIBRARY_VERSION_NUMBER is always present in all source
files when it is defined.

Thanks to dennisip86.

Bug: https://github.com/eclipse/mosquitto/issues/180
9 years ago
Lance Chen f18e8e12a8
Add build configuration for CPP static library
The CPP static library respects options
BUILD_STATIC_LIBRARY and WITH_PIC as well.

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Lance Chen aa360e4029
Add an option to control building static library with PIC or not
The option WITH_PIC is default to OFF.

By default, the static library is built from the
source code directly. If WITH_PIC is enabled, the
static library is built with the same set of
object libraries that the shared library uses.

To link Mosquitto static library into a shared
library, one must enable WITH_PIC to make the
piece of code locatable.

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Lance Chen 7ee997e6cc
Add an option to control building static library or not
The BUILD_STATIC_LIBRARY option is default to ON.

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Lance Chen b87082c604
Fix fail linking of handle* functions in the shared library
The shared library fails to link to `handle*` functions
implementd in lib/handle_* because these source file
definitions seem to be removed accidentally in commit
3499c09.

Signed-off-by: Lance Chen <cyen0312@gmail.com>
9 years ago
Roger A. Light a187b3f5fa [57] Handle PUB* with unknown message id gracefully.
Allows message flow to complete where e.g. the broker didn't persist a
partially complete flow.

Thanks to jsaak jsaak and Hiram van Paassen.

Bug: https://github.com/eclipse/mosquitto/issues/57
9 years ago
Roger A. Light e8185ddaa7 [166] Don't cancel external threads.
libmosquitto shouldn't cancel threads it didn't create. This change
allows us to keep track of whether threads were created by the library
or by external code.

Thanks to Josip Ćavar.

Bug: https://github.com/eclipse/mosquitto/issues/166
10 years ago
Roger A. Light c6ef86bd1f Print openssl errors when debugging enabled. 10 years ago
Roger Light dfeb2f9ba6 Merge pull request #141 from PierreF/large-queued-performance-2
Improve performance with lots of queued message
10 years ago
Dmitry Kaukov 606aa5b4fa Workaround for Windows SSL (#160)
Closes #154.

Signed-off-by: Dmitry Kaukov <dkaukov@opentable.com>
10 years ago
Ian Johnson a0a0cc3076 Renaming STATIC_LIB -> LIBMOSQUITTO_STATIC
Signed-off-by: Ian Johnson <ijohnson@wolfram.com>
10 years ago
Ian Johnson 3499c094dc Putting the list of files into a variable C_SRC and modiftying the add_library calls to use this variable
Signed-off-by: Ian Johnson <ijohnson@wolfram.com>
10 years ago
Ian Johnson 93906b9dfd We don't want to add any declaration properties for the static library, as the static library doesn't export or import anything, so when STATIC_LIB is defined the libmosq_EXPORT defines to nothing
Signed-off-by: Ian Johnson <ijohnson@wolfram.com>
10 years ago
Ian Johnson 13f28d1c1e Adding the static library target, libmosquitto_static, to CMakeLists.txt so it gets installed, and when compiled STATIC_LIB gets defined for only the static library
Signed-off-by: Ian Johnson <ijohnson@wolfram.com>
10 years ago
Ian Johnson 87112a7e21 On Mac, we don't want to run /sbin/ldconfig as it doesn't exist
Signed-off-by: Ian Johnson <ijohnson@wolfram.com>
10 years ago
Pierre Fersing 44f23252a0 Improve performance with lots of queued message
Split message queue in two queues: in-flight and queued to avoid the
need to iterate over all messages.

Signed-off-by: Pierre Fersing <pierre.fersing@bleemeo.com>
10 years ago
Roger A. Light caa394d0fe Return value of pthread_create is now checked. 10 years ago
Roger A. Light 69a08ab905 Fix string quoting in CMakeLists.txt. Closes #4. 10 years ago
Roger A. Light 556c629ab5 Don't use reserved names in header guards.
Closes #3.
10 years ago
Roger A. Light db2e66c543 Reorganise functions into separate files as appropriate. 10 years ago