Commit Graph

1270 Commits (master)

Author SHA1 Message Date
Roger A. Light edee5aaf8d Add the `bridge_bind_address` option.
Closes #1311. Thanks to beville.
5 years ago
Roger A. Light 443275a2d0 Fix more "incorrect" disconnect messages. 5 years ago
Roger A. Light dcf6372a2a Add support for bridge retain-available. 5 years ago
Roger A. Light 291b711bd4 Fix incorrect disconnect messages. 5 years ago
Roger A. Light d8f5aacd7f Add the `bridge_max_packet_size` option.
Closes #265.
5 years ago
Roger A. Light 916c3744f3 Fix `log_timestamp_format` not applying to `log_dest topic`.
Closes #1862. Thanks to Kaushik-27.
5 years ago
Roger A. Light 88b5daee66 Try very hard not to produce "Socket error" message.
This happens when an unhandled error occurs on a socket/read write. The
message is confusing to people.
5 years ago
Roger A. Light fdff255916 New dynamic security plugin. 5 years ago
Roger A. Light 3b99fbbe8c Return MOSQ_ERR_NOT_SUPPORTED on unsupported plugin event. 5 years ago
Roger A. Light 95e009c429 Document what to do on non-matching plugin versions. 5 years ago
Roger A. Light 42b9d94e91 Tell plugins which plugin versions the broker supports. 5 years ago
Roger A. Light 06b933c3ba Add tick event to plugin interface. 5 years ago
Roger A. Light 9d68da4664 Fix plugin payload modification. 5 years ago
Roger A. Light e69dedfc27 Make more portable. 5 years ago
Roger A. Light 6035d8015b Consistent naming. 5 years ago
Roger A. Light c51f2300f1 Log warning if starting in local only mode. 5 years ago
Roger A. Light 1851a0e1b1 Add support for pbkdf2 hash iterations. 5 years ago
Roger A. Light 4ae8971ce1 The broker now sends the receive-maximum property for MQTT v5 CONNACKs. 5 years ago
Roger A. Light 4f61f6c161 Fix conversion errors. 5 years ago
Roger A. Light ef68063985 Convert default security to "plugin" mode.
This converts password_file and acl_file checks to act like a v5 plugin.
5 years ago
Roger A. Light f18f1a08a9 Merge branch 'feature/add-deny-option-for-acl' of git://github.com/BrandtHill/mosquitto into BrandtHill-feature/add-deny-option-for-acl 5 years ago
Roger A. Light 94c4108977 The `pid_file` option will now always attempt to write a pid file.
This happens regardless of whether the `-d` argument is used when
running the broker.

Closes #1845. Thanks to habazut.
5 years ago
Roger A. Light 89733138bb CMake build fixes. 5 years ago
Roger A. Light 24a9c7d508 Build variant fixes. 5 years ago
Roger A. Light d70ffd4b00 Move db_dump to apps directory. 5 years ago
Roger A. Light b404d56281 Move deps directory to root. 5 years ago
Roger A. Light f85e004415 Move password functions to own file. 5 years ago
Roger A. Light 4472c1f441 Added support for controlling UNSUBSCRIBE calls in v5 plugin ACL checks. 5 years ago
Roger A. Light a65f946e83 Move headers to own directory. 5 years ago
Roger A. Light 908b33c0bd Update uthash to 2.1.0. 5 years ago
Roger Light 5b4884a855 Callback struct padding for future use. 5 years ago
Roger Light bcf7545015 Export broker plugin functions on Windows. 5 years ago
Roger Light ff2636b3ae Build fix for Windows. 5 years ago
Roger Light e8a641c759 Fix plugin interface on example debug and defer plugins. 5 years ago
Roger A. Light 67549f48ba context->mosq in websockets. 5 years ago
Roger A. Light 7cce159ff4 Don't free will_struct after the client context owns it. 5 years ago
Roger A. Light c7f429cab2 Deprecation warnings. 5 years ago
Roger A. Light c90e49af1b Merge remote-tracking branch 'origin/fixes' into develop 5 years ago
Roger A. Light 0ad7bbbd29 Plugin header update with description. 5 years ago
Roger A. Light 36950cc71e mosquitto_plugin_publish no longer exists. 5 years ago
Roger A. Light 54b9571516 Enable TLS with certfile+keyfile, not capath/cafile. 5 years ago
Roger A. Light 5371bd09d1 Add support for PBKDF2-SHA512 password hashing. 5 years ago
Roger A. Light c927446264 Fix $CONTROL plugin unregistering. 5 years ago
Roger A. Light d8d24e76eb Free plugin identifier on cleanup. 5 years ago
Roger A. Light 5d6bdc5de4 Allow CONTROL messages to set a reason code/string for PUBACK/PUBREC. 5 years ago
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.
5 years ago
Roger A. Light 43b3184492 Rename to indicate these are public functions. 5 years ago
Roger A. Light 2f89203c67 Always ensure the client is in the hash before deleting. 5 years ago
Roger A. Light 7ad1ec819c Cleanup bridge ssl_ctx on exit. 5 years ago
Roger A. Light a57e41beff Fix use after free (develop branch only). 5 years ago
Roger A. Light 20feb10366 Fix leak on malformed v5 subscribe. 5 years ago
Roger A. Light 97bd527df0 Breaking: allow_anonymous defaults to false. 5 years ago
Roger A. Light d7d3087b04 Breaking: Bind to loopback if no listeners are configured. 5 years ago
Roger A. Light 5daa5ee162 Add support for $CONTROL/ topics in plugins. 5 years ago
Roger A. Light f0862e26ec Add `mosquitto_kick_client_by_clientid()` and `mosquitto_kick_client_by_username()`
These can be used by plugins to disconnect clients.
5 years ago
Roger A. Light 3f1515e337 Fix missing argument. 5 years ago
Roger A. Light bb5456729d Move keepalive check code to separate file.
This is in preparation for changing to a tree based implementation.
5 years ago
Roger A. Light 961ffcb2ae Remove redundant keepalive check.
Websockets clients are now part of the by_sock hashtable, so this isn't
needed.
5 years ago
Roger A. Light 219f2c20d2 Ensure all websockets outgoing buffer is used. 5 years ago
Roger A. Light c1b009e4df Fix memory leak on handling QoS 2 PUBLISH.
In some circumstances, Mosquitto could leak memory when handling PUBLISH  messages. This is limited to incoming QoS 2 messages, and is related to the combination of the broker having persistence enabled, a clean session=false client, which was connected prior to the broker restarting, then has reconnected and has now sent messages at a sufficiently high rate that the incoming queue at the broker has filled up and hence messages are being dropped. This is more likely to have an effect where max_queued_messages is a small value. This has now been fixed.

Closes #1793. Thanks to mbates14.
5 years ago
Roger A. Light b3b58cc635 Build warning fixes. 5 years ago
Roger A. Light 4dc835b73d Fix possible memory leaks on errors during persistence write. 5 years ago
Roger A. Light 18e79eac22 Use hash_find rather than hash_iter for unpwd check. 5 years ago
Roger A. Light b66ffb8039 Move unpwd to security_options struct. 5 years ago
Roger A. Light 581e843131 Move keepalive check to its own function. 5 years ago
Roger A. Light cae55aa381 Make correct allow_anonymous check in pwfile security.
We always get passed the client even if it doesn't have a
username/password now.
5 years ago
Roger A. Light a5f02f31fc Json helper functions. 5 years ago
Roger A. Light b91e78318d Don't always iterate over entire inflight messages list
If we have e.g. max_inflight_messages set to 1000, and currently have 999 messages inflight, then when we send a new message to a client we have to iterate over the whole list to get to the newest message. This change means that we start of the back of the list to find the newest items, which reduces overhead.
5 years ago
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>
5 years ago
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.
5 years ago
Roger A. Light 2dc8d2a19a Allow plugins to send messages to specific clients. 5 years ago
Roger A. Light e56b953abd Free memory after sending queued plugin message. 5 years ago
Roger A. Light a913a05fbd Documentation and error checking. 5 years ago
Roger A. Light d6f4f4e0bc Add mosquitto_broker_publish_copy()
Rename mosquitto_plugin_publish() to mosquitto_broker_publish().

These two functions achieve the same thing. *_publish() publishes the payload and frees it later. *_publish_copy() takes a copy of the payload, so the plugin still owns the memory it passed to the function.
5 years ago
Roger A. Light de5a820fe2 Start of dynamic control topics. 5 years ago
Roger A. Light 32ed4809ed Build fix for NetBSD.
Thanks to Greg Troxel.
5 years ago
Roger Light 60dc8f5e4c Fix service path quoting on Windows.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=565671
5 years ago
Roger Light 3eb60e2e6a Fix some winsock argument types. 5 years ago
Roger A. Light f180e923ef Merge branch 'lazy_ssl' of git://github.com/abiliojr/mosquitto into abiliojr-lazy_ssl 5 years ago
Roger A. Light 43df213ecb Merge branch 'improve-client-store' of git://github.com/dbeinder/mosquitto into dbeinder-improve-client-store 5 years ago
david-beinder 212fd8635f Store username and listener of persistent clients
Signed-off-by: david-beinder <david.beinder@mce.li>
5 years ago
Roger A. Light 94d04136f8 Fix potential memory leaks.
Closes #1773. Closes #1774. Thanks to Yingpei Zeng.
5 years ago
Roger A. Light 7cb72cf1ba Fix incorrect NULL check.
Coverity Scan 1431137.
5 years ago
Roger A. Light 94b39d12ac Fix potential NULL dereference.
Coverity Scan 1431139.
5 years ago
Roger A. Light 872222c3c9 Remove unused values.
Coverity Scan 1431134, 1431136, 1431140.
5 years ago
Roger A. Light 618cd7006b Don't try to start DLT logging if DLT unavailable.
This is to avoid a long delay when shutting down the broker.

Closes #1735. Thanks to Colin Law.
5 years ago
Roger A. Light 84e4ba2c1e Send DISCONNECT with malformed-packet reason code on bad PUBLISHes. 5 years ago
Roger A. Light b1e9377a20 Send DISCONNECT with malformed-packet reason code on bad SUBSCRIBEs. 5 years ago
Roger A. Light 8416b007ec Send DISCONNECT with malformed-packet reason code on bad UNSUBSCRIBEs. 5 years ago
Roger A. Light 1f717873d6 Log protocol error message where appropriate from a bad UNSUBSCRIBE
Rather than the generic "socket error".

Related to #1765.
5 years ago
Abilio Marques d5aae3eca7 lazy init SSL
Signed-off-by: Abilio Marques <abiliojr@gmail.com>
5 years ago
Simon Tate 1608151569 Fix bridge reconnect
In the mux_epoll__add_in function, no context->events was set. Previously this was set to match the ev.events (EPOLLIN). Adding this back in, keeps the code consistent to before it was refactored to split out epoll and poll functions, as well as being consistent with the other mux_epoll__ functions.

If this is not set, the connection is never fully established when the broker comes back up.

Fixes #1680.

Signed-off-by: Simon Tate <simon.tate@bt.com>
5 years ago
Roger A. Light 2b1a22776b Only call setvbuf on open files. 5 years ago
Roger A. Light 86e7eed8b7 Fix minor leak when cleaning a bridge on exit. 5 years ago
Roger A. Light 4f9a1a53ce Fix incorrect store ref count usage. 5 years ago
Roger A. Light 54f3b686dc Fix "slow" file based logging by switching to line based buffering.
Closes #1689. Closes #1741. Thanks to Brett M. Gordon and tt92.
5 years ago
Roger A. Light 8234d24b1b Fix websockets clients sometimes not being disconnected promptly.
Closes #1718. Thanks to Luca Casonato.
5 years ago
Roger A. Light b4e0dfa598 Fix `autosave_interval` not being triggered by messages being delivered.
Closes #1726. Thanks to nduhme.
5 years ago
Roger A. Light 4e0312c55f Fix messages being queued for disconnected bridges
This occurred incorrectly when clean start was set to true.

Closes #1729. Thanks to Andreyooo.
5 years ago
Roger A. Light 1d66d3e443 Fix bridge topic remapping when using "" as the topic.
Closes #1749. Thanks to cieslarchristian.
5 years ago
Roger A. Light 5a56f066a8 Change systemd unit files to create /var/log/mosquitto
This happens before starting the broker.

Also don't quit with an error if opening the log file isn't possible.

Closes #821.
5 years ago
Roger A. Light abb31ffe8d Fix broker refusing to start if only websockets listeners were defined.
Closes #1740. Thanks to OkenKhuman.
5 years ago
Roger A. Light f46187d5e5 Add `mosquitto_client_protocol_version()` function.
This can be used by plugins to determine which version of MQTT a client
has connected with.
5 years ago
Sigmund Vik 5481575f8b Fix FormatMessage warnings for Windows.
From the FormatMessage() Win32 API documentation: "The lpBuffer
parameter is a pointer to an LPTSTR; you must cast the pointer
to an LPTSTR (for example, (LPTSTR)&lpBuffer)."

https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-formatmessage#parameters

This commit fixes warnings like these:
warning C4047: 'function': 'LPSTR' differs in levels of indirection from 'char **'
warning C4024: 'FormatMessageA': different types for formal and actual parameter 5

Signed-off-by: Sigmund Vik <sigmund_vik@yahoo.com>
5 years ago
Sigmund Vik a75d574870 Fix sys_tree macro stubs with no arguments.
This fixes Visual Studio compiler warnings like this one:
"warning C4003: not enough arguments for function-like
macro invocation 'G_MSGS_DROPPED_INC'"

Signed-off-by: Sigmund Vik <sigmund_vik@yahoo.com>
5 years ago
Sigmund Vik 20972a2819 Add broker ready message.
Before this commit there was no good way to detect that the
Mosquitto broker was done with its startup phase on systems
without systemd.

On such systems it was tricky to e.g. start the broker from
a test where ports are dynamically assigned and one have to
deal with potential port conflicts.  Without a way to know
that the broker is done with its startup phase, there was no
way to know if the broker was able to acquire the port (for
both IPv4 and IPv6) without waiting for some unknown period
of time (when many tests are run in parallel a single process
might be starved for resources).

With this new broker ready message it is easy for the parent
process to monitor the broker output and figure out when the
port was successfully acquired.

Signed-off-by: Sigmund Vik <sigmund_vik@yahoo.com>
5 years ago
Roger A. Light abc191ad00 db_dump: Fix mosquitto_msg_store usage. 5 years ago
Roger A. Light a07edaa4a0 db_dump: Print error when file not accessible. 5 years ago
Roger A. Light 6deb417804 Simplify db__message_store() interface. 5 years ago
Roger A. Light 3e595d557e Add db__msg_store_free() for freeing stored messages. 5 years ago
Roger A. Light e3e8dc4ea4 Allow send__pub{ack,rec,rel,comp} to send properties. 5 years ago
Roger Light 318dead6bf Function to allow plugins to publish messages. 5 years ago
Roger A. Light e54bac2a54 No need to pass separate username/password here. 5 years ago
Roger A. Light 73cc271d37 Allow auth plugin to see all logins, unless accepted by password file. 5 years ago
Roger A. Light 2e32634a95 DLT logging is now configurable at runtime with `log_dest dlt`.
Closes #1735. Thanks to Brian Orpin.
5 years ago
Jasper Lievisse Adriaanse 2758401829 only link with libm on OpenBSD
fixes "ld: error: unable to find library -ldl"

Signed-off-by: Jasper Lievisse Adriaanse <jasper@humppa.nl>
5 years ago
Roger A. Light 4b541ad5ca Fix usage message not mentioning v5.0.
Closes #1713. Thanks to whnr.
5 years ago
Roger A. Light 6bd435d721 Fix possible assert crash associated with bridge reconnecting.
This only occurs when compiled without epoll support.

Closes #1700. Thanks to Matthias Urlichs.
5 years ago
Roger A. Light eae8c9aab4 Fix check when loading persistence file of a different version
Closes #1684. Thanks to grekhss.
5 years ago
Roger A. Light 762ad432e8 Fix support for openssl 3.0 5 years ago
Roger A. Light e755827f4f Free outgoing client messages even for non-bridges. 5 years ago
Roger A. Light ee7d1981ff Merge branch 'rfc-bridge-local-clean' of git://github.com/etactica/mosquitto into etactica-rfc-bridge-local-clean 5 years ago
Roger A. Light d3247a830a Fix memory leak when connecting clients are rejected. 5 years ago
Roger A. Light bfc82ea91a Fix incorrect check. 5 years ago
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.
5 years ago
Roger A. Light c5d6f32341 Be more tolerant when loading persistence files. 5 years ago
Roger A. Light eeaafed485 Fix memory leak when connecting clients rejected. 5 years ago
Roger A. Light ff2b111cb3 Fix minor memory leak when load bridge prefixes. 5 years ago
Roger A. Light 4392320bc3 Fix memory leak when cleaning all shared subs. 5 years ago
Roger A. Light ea47f6b0dc Clearer client disconnection message. 5 years ago
Roger A. Light 5908585afd Fix mosquitto_passwd -b not updating passwords for existing users
Closes #1664. Thanks to Leon Kiefer.
6 years ago
Roger A. Light 3758e0c328 Fix mosquitto_passwd not being able to create pwfile with -b. 6 years ago
Roger A. Light cef9d891ae Tidy up main(). 6 years ago
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.
6 years ago
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.
6 years ago
Roger A. Light 4ab0f4bd39 Fix bundled deps option not being propagated to library.
Issue #1641.
6 years ago
Roger Light 986bf89f47 Prototype separate poll/epoll files. 6 years ago
Roger A. Light c3e824ee22 Remove duplicate strlen() calls. 6 years ago
Roger A. Light 95faff36aa Fix ref counting of retained messages. 6 years ago
Roger A. Light 0b7b7389b0 Remove duplicate UTF-8 check
All strings are already validated in packet__read_string().
6 years ago
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>
6 years ago
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>
6 years ago
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>
6 years ago
Roger A. Light c84d175b3d Fixes for the poor souls stuck on <c99.
Closes #1622.
6 years ago
Roger A. Light c175e836a7 Print openssl error when unable to load server key. 6 years ago
Roger A. Light d96543c0b8 Merge branch 'fixes' into develop 6 years ago
Roger A. Light b0a065f790 Update changelog. Release page. Bump copyright. 6 years ago
Roger A. Light 0c68c20d2b Fix `mosquitto_client_protocol()` returning incorrect values. 6 years ago
Roger A. Light db02c9162d Add plugin that prints out calls, to help debugging. 6 years ago
Roger A. Light 032af6bf69 Add missing header 6 years ago
Roger A. Light c4e41f3444 Back port db_dump from develop.
Closes #1519. Thanks to Christoph Krey.
6 years ago
Roger A. Light 2a8c1d03f5 Merge branch 'coverity-fixes' into fixes 6 years ago
Gianfranco Costamagna 078ad752cd cmake: add ADNS enable/disable dynamic support
Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
6 years ago
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>
6 years ago
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.
6 years ago
Roger A. Light 27b4518d7e Improve password file parsing in the broker and mosqitto_passwd.
Closes #1584. Thanks to panava.
6 years ago
Roger A. Light ed5db1bd6b Fix `bind_interface` not working for the default listener.
Closes #1533. Thanks to Markus Gothe.
6 years ago
Roger A. Light e188a6b500 More whitespace trimming fixes/consolidation. 6 years ago
Roger A. Light 32969169f7 Trim whitespace from acl topics. 6 years ago
Roger A. Light 70fd600c3a Fix trailing whitespace not being trimmed on acl users.
Closes #1539. Thanks to CliveJL and LeonPoon.
6 years ago
Roger A. Light 9a0de5ef61 Free log_timestamp_format on exit.
Closes #1523. Thanks to Basavesh Shivakumar.
6 years ago
Roger A. Light 11ece604c4 Merge branch 'bugfix-MemLeak_in_handle_unsubscribe' of git://github.com/panava/mosquitto into panava-bugfix-MemLeak_in_handle_unsubscribe 6 years ago
Roger A. Light 3220790790 Merge branch 'bugfix-MemoryLeak_in_persist_read' of git://github.com/panava/mosquitto into panava-bugfix-MemoryLeak_in_persist_read 6 years ago
Roger A. Light 50735afb5b Fix for internal logging not printing. 6 years ago
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>
6 years ago
Roger A. Light 9ae38788dc Fix config->user not being freed on exit.
Closes #1564. Thanks to back1127.
6 years ago
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.
6 years ago
Roger A. Light e7c9f009bd Strip whitespace from end of config file string options.
Closes #1566. Thanks to kollokollo.
6 years ago
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>
6 years ago
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>
6 years ago
Roger A. Light 5528dde56a Fix possible null dereferences. 6 years ago
Roger A. Light 05ec02b3f3 Remove dead values. 6 years ago
Roger A. Light 18f0508a6e Fix dereference before null check.
Coverity Scan 1405815.
6 years ago
Roger A. Light db62f9843f Fix unused value being overwritten.
Coverity Scan 1400727.
6 years ago
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.
6 years ago
Roger A. Light b6119bb759 Check ACL patterns for validity when loading.
Closes #1539. Thanks to Leon Poon.
6 years ago
Roger A. Light e5561cd09e Fix db_dump compilation.
Closes #1520.
6 years ago
Roger A. Light c8789180f3 Fix session expiry with very large expiry intervals.
Closes #1525. Thanks to Christoph Krey.
6 years ago
Roger A. Light 8a6f179c83 Fix comment. 6 years ago
Roger A. Light 3f0c202aa5 Reduce heap allocation churn when tokenising topics. 6 years ago
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
6 years ago
Roger A. Light 6dec2b468b Remove redundant expiry checks
This is all now handled in session_expiry.c, through session expiry interval/time.
6 years ago
Roger A. Light a46b45b006 Fix persistent_client_expiration not being used
Closes #1494. Thanks to Christoph Krey.
6 years ago
Roger Light d92360dd8e Split sub and retain trees. 6 years ago
Roger A. Light d003fed383 MQTT v5 bridges can handle "retain-available" being false. 6 years ago
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.
6 years ago
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.
6 years ago
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.
6 years ago
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.
6 years ago
Roger A. Light d49988fa6f Rejig unix socket support. 6 years ago
Roger A. Light 253326dcc9 Fix problems with reloading config when `per_listener_settings` was true.
Closes #1459. Thanks to Thomas Markin Klein.
6 years ago
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.
6 years ago
Roger A. Light 847c3f1f8b Move bridge on connect code to bridge.c. 6 years ago
Roger A. Light 1ab19f2b3d Make error messages clearer when bridge misconfigured 6 years ago
Roger A. Light 17c32d89d9 Restrict access to unix socket. 6 years ago
Roger A. Light 43a692dfbe Add new files to cmakelists. 6 years ago
Roger A. Light 499e2f2e98 Add support for unix sockets to broker, lib, and clients. 6 years ago
Roger A. Light fad184c9c2 Bridge remapping refactoring and tests. 6 years ago
Roger A. Light 8463c33720 Refactor property remaining length calculation. 6 years ago
Roger A. Light cfacd961c9 Only a single CRL could be loaded at once. This has been fixed.
Closes #1442. Thanks to charlemagnelasse.
6 years ago
Roger A. Light c471dfb201 Fix sub topics being limited to 200 chars instead of 200 levels
Closes #1441. Thanks to Christoph Krey.
6 years ago
Roger A. Light b942b73b6d Fix incorrect memory tracking causing problems with memory_limit option.
Closes #1437. Thanks to Guillaume Bour.
6 years ago
Roger A. Light 4db1e80410 More allow_zero_length_clientid fixes.
Closes #1429. Thanks to Dustin Sallings.
6 years ago
Roger A. Light 539c1b9bcb Tests for zero length client id, plus fix for one case where it was allowed 6 years ago
Roger A. Light 54ed3c0fc9 Merge branch 'master' into develop 6 years ago
Roger A. Light 6a01453ce0 Build fixes. 6 years ago
Roger A. Light 9584463c75 Fix potential crash when reloading config.
Closes #1424, #1425. Thanks to JinPingChng and peteakalad.
6 years ago
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.
6 years ago
Roger A. Light 096380fbdc Add workaround for libwebsockets 3.2.0. 6 years ago
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.
6 years ago
Roger A. Light 1066750931 Restrict topic hierarchy to 200 levels to prevent possible stack overflow.
Closes #1412. Thanks to Ryan Shaw.
6 years ago
Roger A. Light 0a0ad4cd6c Fix for old libwebsockets versions. 6 years ago
Roger A. Light ce68040f22 Refuse to compile with lws 3.2.0. 6 years ago
Roger A. Light 8f6ac1b64a Fix for websockets regression. 6 years ago
Roger A. Light 5941291bd5 Fix build WITH_TLS=no 6 years ago
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.
6 years ago
Roger A. Light 4dc98c4cef Fix CRL file not being reloaded on HUP.
Closes #35.
6 years ago
Roger Light 31f09d1206
Merge pull request #1405 from woelfman/fix-engine-key-uri
Fix usage of tls_engine and tls_keyform.
6 years ago
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>
6 years ago
Roger A. Light 034324c46d Fix websockets 3.2 causing slow connection on non-websockets listeners
Closes #1406. Thanks to pbrenna.
6 years ago
Roger A. Light 5fd92cbfbd Further fix for #1401. 6 years ago
Roger A. Light 3c35c6cdd9 Fix Will not being sent if will delay greater than session expiry.
Closes #1401. Thanks to Will Lisac.
6 years ago
Roger A. Light f1516f86cb Improve error messages in some situations when clients disconnect.
Reduces the number of "Socket error on client X, disconnecting"
messages.
6 years ago
Roger A. Light 779c6cc234 Fix leak introduced in previous commit. 6 years ago
Roger A. Light f6b22f8248 Fix clients using `use_identity_as_*` being disconnected on SIGHUP.
Closes #1402. Thanks to twegener-embertec.
6 years ago
Roger A. Light 4658dba6b3 Fix slow websockets performance when sending large messages.
Closes #1390. Thanks to aalibasic.
6 years ago
Roger A. Light 4c4ca38938 Fix support for libwebsockets 3.x. 6 years ago
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>
6 years ago
Roger A. Light 570c3674fb Drop privs to nobody if mosquitto user does not exist. 6 years ago
Roger A. Light 1c1ccaee52 Merge branch 'master' into develop 6 years ago
Roger A. Light cbced051e7 Better check for printable db_dump payloads. 6 years ago
Roger A. Light 9c3e6b4ccc Remove debug printfs. 6 years ago
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.
6 years ago
Roger A. Light c269e6f019 db_dump: Update for version 5 file format
Closes #1320. Thanks to Christoph Krey.
6 years ago
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
6 years ago
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.
6 years ago
Roger A. Light 696a9b8019 Fix incomgin QoS 2 with max_inflight_messages set to 1.
Closes #1332. Thanks to xmas79.
6 years ago
Roger A. Light 13ac1080a0 Refactoring bridge code
This separates out a good amount from the main loop code.
6 years ago
Roger A. Light d17d7c9229 Fix persistent clients being incorrectly expired on Raspberry Pis.
Closes #1272. Thanks to BowenMarmot and addendumE.
6 years ago
Matevz Mihalic 0a5fbc403b
Fix plugin psk_key_get for v4
Signed-off-by: Matevz Mihalic <matevz.mihalic@gmail.com>
6 years ago
Roger A. Light 587debc013 Fix incoming/outgoing quota problems for QoS>0. 6 years ago
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.
6 years ago
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.
6 years ago
Roger A. Light e51e40e95c Fix incorrect shared subscription topic of '$shared.' 6 years ago
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.
6 years ago
Roger Light 44d170053d
Merge pull request #1255 from etactica/ssl-fixes
Ssl fixes for ENGINE and UI includes
6 years ago
Roger A. Light 96d0a26902 Only add to disused if session expiry is 0. 6 years ago
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.
6 years ago
Roger A. Light 3dd8eb722b Colour internal logs for visibility. 6 years ago
Roger A. Light 00eee59ad9 Add 'extern "C"' on public headers.
mosquitto_broker.h and mosquitto_plugin.h

Thanks to Wolfgang Petroschka.

Closes #1290.
6 years ago