Roger A. Light
8787ec7b2e
Remove non-existant linker functions.
2020-11-20 16:04:39 +00:00
Roger A. Light
b81f0d6782
Set to NULL for safety.
2020-11-18 15:45:10 +00:00
Roger A. Light
524510f4f6
Fix some plugin memory not being freed on exit.
2020-11-18 11:46:10 +00:00
Roger A. Light
f02c67fecf
Fix file logging on Windows.
...
Closes #1880 . Thanks to J1EXA, richl, and EnneiteZer.
2020-11-17 11:08:20 +00:00
Roger A. Light
47f4cb8159
Fix potential null dereference.
2020-11-17 11:00:24 +00:00
Roger A. Light
5db9884bac
Fix poll() build
2020-11-17 10:51:50 +00:00
Roger A. Light
e7a4e73cd8
Fix listener not being reassociated with client.
...
This occurred when reloading a persistence file and
`per_listener_settings true` is set and the client did not set a
username.
Closes #1891 . Thanks to Mikkel Nepper-Christensen.
2020-11-12 17:36:49 +00:00
Roger A. Light
90ce92144c
Fix websockets build.
2020-11-06 18:23:55 +00:00
Roger A. Light
26e8cc3fb9
Fix connack props not being freed on error.
2020-11-06 18:12:12 +00:00
Roger A. Light
8de1216105
No need to call time() when logging.
2020-11-06 17:16:35 +00:00
Roger A. Light
b816d46508
Use db as a global var instead of passing to functions.
...
This allows a big swath of ifdefs to be removed. It also means savings as the db var is not passed around all of the time, and makes it easier to remove the final broker call to mosquitto_time() call in packet_mosq.c. In one test this reduced the calls to mosquitto_time() from 295k to 48k.
2020-11-06 17:16:23 +00:00
Roger A. Light
108b23ce6d
Reduce use of mosquitto_time() and time().
2020-11-06 14:20:39 +00:00
Roger A. Light
e6b8fc5bbd
Fix oversize packet check in CONNECT.
2020-11-06 12:02:43 +00:00
Roger A. Light
3091d624ed
Free plugin identifier.
2020-11-06 11:41:33 +00:00
Roger A. Light
c5ba597588
Fix use after free (unreleased)
2020-11-06 11:19:27 +00:00
Roger A. Light
693f6ad36e
Only make keepalive checks every 5 seconds.
2020-11-05 21:43:23 +00:00
Roger A. Light
23d3c2641e
Optimise epoll event to context/listener mapping. Allows quicker lookups.
2020-11-05 16:10:50 +00:00
Roger A. Light
2a1df4ddb2
Breaking: Drop privileges after loading the configuration
...
This change means privileges are dropped before loading certificates, starting logging, creating the pid file etc. are carried out, so all of those actions must now be changed to ensure that the unprivileged user can carry them out.
2020-11-05 12:05:07 +00:00
Roger A. Light
c5fee09c24
Basic client disconnect event support for plugins.
2020-11-05 10:52:21 +00:00
Roger A. Light
4d6384c758
Build and conversion fixes for build variants.
2020-11-05 10:23:01 +00:00
Roger A. Light
e6dd08074d
TLS certificates for the server are now reloaded on SIGHUP.
2020-11-04 22:57:10 +00:00
Roger A. Light
b2560f5e06
Move certificate loading to its own function.
2020-11-04 22:21:17 +00:00
Roger A. Light
24462a816b
Tidy up headers.
2020-11-04 22:20:50 +00:00
Roger A. Light
801e31efda
Dynsec: Validate user/group/role names as UTF-8.
2020-11-04 13:32:27 +00:00
Roger A. Light
7462fec1c8
Dynsec: Check ACLs are valid topic filters.
2020-11-04 12:20:14 +00:00
Roger A. Light
1191a42c2e
Fix more incorrect quota handling.
...
Must check QoS, and directions were wrong.
2020-11-02 23:14:21 +00:00
Roger A. Light
042c2733f2
Test and fix for message expiry not increasing send quota.
2020-11-02 23:09:18 +00:00
Roger A. Light
31b1cbb23f
dynsec: Clients can be created with no password.
...
They will be unable to log in until a password is created.
2020-10-29 14:35:11 +00:00
Roger A. Light
fcb8bc0b9b
Fix use of incorrect callback list.
2020-10-28 11:23:48 +00:00
Roger A. Light
e01d391c0b
Fix crash on Windows if loading a plugin fails.
...
Closes #1866 . Thanks to roebotron.
2020-10-27 18:25:00 +00:00
Roger A. Light
451b8d0f59
Remove allocs in logging.
2020-10-27 17:13:28 +00:00
Roger A. Light
edee5aaf8d
Add the bridge_bind_address
option.
...
Closes #1311 . Thanks to beville.
2020-10-27 16:32:21 +00:00
Roger A. Light
443275a2d0
Fix more "incorrect" disconnect messages.
2020-10-27 15:35:40 +00:00
Roger A. Light
dcf6372a2a
Add support for bridge retain-available.
2020-10-27 13:52:35 +00:00
Roger A. Light
291b711bd4
Fix incorrect disconnect messages.
2020-10-27 12:37:54 +00:00
Roger A. Light
d8f5aacd7f
Add the bridge_max_packet_size
option.
...
Closes #265 .
2020-10-27 11:35:06 +00:00
Roger A. Light
916c3744f3
Fix log_timestamp_format
not applying to log_dest topic
.
...
Closes #1862 . Thanks to Kaushik-27.
2020-10-27 10:35:45 +00:00
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.
2020-10-27 10:04:22 +00:00
Roger A. Light
fdff255916
New dynamic security plugin.
2020-10-27 00:54:55 +00:00
Roger A. Light
3b99fbbe8c
Return MOSQ_ERR_NOT_SUPPORTED on unsupported plugin event.
2020-10-26 11:41:33 +00:00
Roger A. Light
95e009c429
Document what to do on non-matching plugin versions.
2020-10-24 00:17:13 +01:00
Roger A. Light
42b9d94e91
Tell plugins which plugin versions the broker supports.
2020-10-24 00:13:45 +01:00
Roger A. Light
06b933c3ba
Add tick event to plugin interface.
2020-10-23 22:51:08 +01:00
Roger A. Light
9d68da4664
Fix plugin payload modification.
2020-10-21 16:24:43 +01:00
Roger A. Light
e69dedfc27
Make more portable.
2020-10-21 13:37:54 +01:00
Roger A. Light
6035d8015b
Consistent naming.
2020-10-21 13:33:33 +01:00
Roger A. Light
c51f2300f1
Log warning if starting in local only mode.
2020-10-21 13:27:39 +01:00
Roger A. Light
1851a0e1b1
Add support for pbkdf2 hash iterations.
2020-10-21 13:19:32 +01:00
Roger A. Light
4ae8971ce1
The broker now sends the receive-maximum property for MQTT v5 CONNACKs.
2020-10-21 13:19:07 +01:00
Roger A. Light
4f61f6c161
Fix conversion errors.
2020-10-17 01:23:08 +01:00
Roger A. Light
ef68063985
Convert default security to "plugin" mode.
...
This converts password_file and acl_file checks to act like a v5 plugin.
2020-10-15 14:50:46 +01:00
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
2020-10-14 11:30:16 +01:00
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.
2020-10-13 21:14:48 +01:00
Roger A. Light
89733138bb
CMake build fixes.
2020-10-13 16:07:35 +01:00
Roger A. Light
24a9c7d508
Build variant fixes.
2020-10-13 16:06:12 +01:00
Roger A. Light
d70ffd4b00
Move db_dump to apps directory.
2020-10-13 16:06:08 +01:00
Roger A. Light
b404d56281
Move deps directory to root.
2020-10-13 16:06:06 +01:00
Roger A. Light
f85e004415
Move password functions to own file.
2020-10-13 16:05:34 +01:00
Roger A. Light
4472c1f441
Added support for controlling UNSUBSCRIBE calls in v5 plugin ACL checks.
2020-10-09 14:02:02 +01:00
Roger A. Light
a65f946e83
Move headers to own directory.
2020-10-07 22:06:01 +01:00
Roger A. Light
908b33c0bd
Update uthash to 2.1.0.
2020-10-01 17:03:04 +01:00
Roger Light
5b4884a855
Callback struct padding for future use.
2020-09-30 10:26:17 +01:00
Roger Light
bcf7545015
Export broker plugin functions on Windows.
2020-09-30 10:21:26 +01:00
Roger Light
ff2636b3ae
Build fix for Windows.
2020-09-30 09:47:24 +01:00
Roger Light
e8a641c759
Fix plugin interface on example debug and defer plugins.
2020-09-30 09:43:53 +01:00
Roger A. Light
67549f48ba
context->mosq in websockets.
2020-09-25 09:15:22 +01:00
Roger A. Light
7cce159ff4
Don't free will_struct after the client context owns it.
2020-09-25 09:14:31 +01:00
Roger A. Light
c7f429cab2
Deprecation warnings.
2020-09-24 21:42:51 +01:00
Roger A. Light
c90e49af1b
Merge remote-tracking branch 'origin/fixes' into develop
2020-09-24 17:03:14 +01:00
Roger A. Light
0ad7bbbd29
Plugin header update with description.
2020-09-24 09:47:05 +01:00
Roger A. Light
36950cc71e
mosquitto_plugin_publish no longer exists.
2020-09-24 09:14:51 +01:00
Roger A. Light
54b9571516
Enable TLS with certfile+keyfile, not capath/cafile.
2020-09-23 23:31:00 +01:00
Roger A. Light
5371bd09d1
Add support for PBKDF2-SHA512 password hashing.
2020-09-23 22:57:26 +01:00
Roger A. Light
c927446264
Fix $CONTROL plugin unregistering.
2020-09-23 17:03:01 +01:00
Roger A. Light
d8d24e76eb
Free plugin identifier on cleanup.
2020-09-23 15:38:25 +01:00
Roger A. Light
5d6bdc5de4
Allow CONTROL messages to set a reason code/string for PUBACK/PUBREC.
2020-09-23 10:25:03 +01:00
Roger A. Light
cf1c156765
New plugin interface
...
This is not specific to authentication, and allows plugins greater flexibility in what events they are interested in. It also adds message handling, and $CONTROL handling.
2020-09-22 14:49:28 +01:00
Roger A. Light
43b3184492
Rename to indicate these are public functions.
2020-09-18 21:29:42 +01:00
Roger A. Light
2f89203c67
Always ensure the client is in the hash before deleting.
2020-09-17 13:26:31 +01:00
Roger A. Light
7ad1ec819c
Cleanup bridge ssl_ctx on exit.
2020-09-17 12:45:57 +01:00
Roger A. Light
a57e41beff
Fix use after free (develop branch only).
2020-09-17 11:55:53 +01:00
Roger A. Light
20feb10366
Fix leak on malformed v5 subscribe.
2020-09-17 11:44:22 +01:00
Roger A. Light
97bd527df0
Breaking: allow_anonymous defaults to false.
2020-09-17 11:29:32 +01:00
Roger A. Light
d7d3087b04
Breaking: Bind to loopback if no listeners are configured.
2020-09-17 11:10:40 +01:00
Roger A. Light
5daa5ee162
Add support for $CONTROL/ topics in plugins.
2020-09-10 15:32:47 +01:00
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.
2020-09-07 13:51:44 +01:00
Roger A. Light
3f1515e337
Fix missing argument.
2020-09-05 23:16:21 +01:00
Roger A. Light
bb5456729d
Move keepalive check code to separate file.
...
This is in preparation for changing to a tree based implementation.
2020-09-05 22:59:50 +01:00
Roger A. Light
961ffcb2ae
Remove redundant keepalive check.
...
Websockets clients are now part of the by_sock hashtable, so this isn't
needed.
2020-09-05 21:18:45 +01:00
Roger A. Light
219f2c20d2
Ensure all websockets outgoing buffer is used.
2020-09-02 22:24:29 +01:00
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.
2020-08-19 14:38:57 +01:00
Roger A. Light
b3b58cc635
Build warning fixes.
2020-08-19 14:04:02 +01:00
Roger A. Light
4dc835b73d
Fix possible memory leaks on errors during persistence write.
2020-08-19 11:12:05 +01:00
Roger A. Light
18e79eac22
Use hash_find rather than hash_iter for unpwd check.
2020-08-18 15:34:57 +01:00
Roger A. Light
b66ffb8039
Move unpwd to security_options struct.
2020-08-18 15:20:48 +01:00
Roger A. Light
581e843131
Move keepalive check to its own function.
2020-08-18 08:40:33 +01:00
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.
2020-08-18 08:32:21 +01:00
Roger A. Light
a5f02f31fc
Json helper functions.
2020-08-17 23:03:38 +01:00
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.
2020-08-17 23:03:25 +01:00
Brandt Hill
16eecfcbc5
Add 'deny' as an option for topics/patterns in acl file to allow certain topics to be explicitly denied when they might otherwise be allowed through a more open read/write/readwrite option. Example: 'topic readwrite test/#' and 'topic deny test/hello/#' may be added so that a user can read/write to all test/# topics, except for test/hello/#.
...
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
Change variable name for clarity. Remember to initialize bool (I'm bad at C).
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
Add documentation to config man page
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
Add test case for deny option
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
Add deny acls to top of the list to preserve early exit
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
change comments
Signed-off-by: Brandt Hill <brandtlarsonhill@gmail.com>
2020-08-17 00:13:10 -05:00
Roger Light
58aa41c813
Optimise use of db__message_write()
...
New messages are now queued for clients when old ones are sent, rather than on every iteration of the main loop. This produces good performance improvements.
2020-08-12 15:29:08 +01:00
Roger A. Light
2dc8d2a19a
Allow plugins to send messages to specific clients.
2020-08-12 15:18:17 +01:00
Roger A. Light
e56b953abd
Free memory after sending queued plugin message.
2020-08-12 15:18:17 +01:00
Roger A. Light
a913a05fbd
Documentation and error checking.
2020-08-12 15:18:17 +01:00
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.
2020-08-12 15:18:17 +01:00
Roger A. Light
de5a820fe2
Start of dynamic control topics.
2020-08-12 15:18:17 +01:00
Roger A. Light
32ed4809ed
Build fix for NetBSD.
...
Thanks to Greg Troxel.
2020-08-11 16:21:19 +01:00
Roger Light
60dc8f5e4c
Fix service path quoting on Windows.
...
https://bugs.eclipse.org/bugs/show_bug.cgi?id=565671
2020-08-11 09:09:31 +01:00
Roger Light
3eb60e2e6a
Fix some winsock argument types.
2020-08-11 08:43:24 +01:00
Roger A. Light
f180e923ef
Merge branch 'lazy_ssl' of git://github.com/abiliojr/mosquitto into abiliojr-lazy_ssl
2020-08-07 16:42:30 +01:00
Roger A. Light
43df213ecb
Merge branch 'improve-client-store' of git://github.com/dbeinder/mosquitto into dbeinder-improve-client-store
2020-08-07 09:11:43 +01:00
david-beinder
212fd8635f
Store username and listener of persistent clients
...
Signed-off-by: david-beinder <david.beinder@mce.li>
2020-08-07 08:32:14 +02:00
Roger A. Light
94d04136f8
Fix potential memory leaks.
...
Closes #1773 . Closes #1774 . Thanks to Yingpei Zeng.
2020-08-06 21:28:09 +01:00
Roger A. Light
7cb72cf1ba
Fix incorrect NULL check.
...
Coverity Scan 1431137.
2020-08-06 13:50:52 +01:00
Roger A. Light
94b39d12ac
Fix potential NULL dereference.
...
Coverity Scan 1431139.
2020-08-06 13:47:41 +01:00
Roger A. Light
872222c3c9
Remove unused values.
...
Coverity Scan 1431134, 1431136, 1431140.
2020-08-06 13:42:35 +01:00
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.
2020-08-04 11:17:04 +01:00
Roger A. Light
84e4ba2c1e
Send DISCONNECT with malformed-packet reason code on bad PUBLISHes.
2020-08-02 23:12:47 +01:00
Roger A. Light
b1e9377a20
Send DISCONNECT with malformed-packet reason code on bad SUBSCRIBEs.
2020-08-02 15:10:12 +01:00
Roger A. Light
8416b007ec
Send DISCONNECT with malformed-packet reason code on bad UNSUBSCRIBEs.
2020-08-02 14:22:40 +01:00
Roger A. Light
1f717873d6
Log protocol error message where appropriate from a bad UNSUBSCRIBE
...
Rather than the generic "socket error".
Related to #1765 .
2020-07-31 23:01:15 +01:00
Abilio Marques
d5aae3eca7
lazy init SSL
...
Signed-off-by: Abilio Marques <abiliojr@gmail.com>
2020-07-23 17:48:56 +02:00
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>
2020-07-20 15:47:48 +01:00
Roger A. Light
2b1a22776b
Only call setvbuf on open files.
2020-07-19 21:59:28 +01:00
Roger A. Light
86e7eed8b7
Fix minor leak when cleaning a bridge on exit.
2020-07-16 12:03:39 +01:00
Roger A. Light
4f9a1a53ce
Fix incorrect store ref count usage.
2020-07-16 11:18:04 +01:00
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.
2020-07-15 22:28:19 +01:00
Roger A. Light
8234d24b1b
Fix websockets clients sometimes not being disconnected promptly.
...
Closes #1718 . Thanks to Luca Casonato.
2020-07-15 22:06:29 +01:00
Roger A. Light
b4e0dfa598
Fix autosave_interval
not being triggered by messages being delivered.
...
Closes #1726 . Thanks to nduhme.
2020-07-15 19:29:40 +01:00
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.
2020-07-15 17:08:00 +01:00
Roger A. Light
1d66d3e443
Fix bridge topic remapping when using "" as the topic.
...
Closes #1749 . Thanks to cieslarchristian.
2020-07-15 00:19:44 +01:00
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 .
2020-07-14 20:10:54 +01:00
Roger A. Light
abb31ffe8d
Fix broker refusing to start if only websockets listeners were defined.
...
Closes #1740 . Thanks to OkenKhuman.
2020-07-14 17:27:57 +01:00
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.
2020-07-12 23:01:20 +01:00
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>
2020-07-12 22:34:20 +01:00
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>
2020-07-12 22:26:00 +01:00
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>
2020-07-10 22:48:58 +01:00
Roger A. Light
abc191ad00
db_dump: Fix mosquitto_msg_store usage.
2020-07-10 22:00:11 +01:00
Roger A. Light
a07edaa4a0
db_dump: Print error when file not accessible.
2020-07-10 21:46:44 +01:00
Roger A. Light
6deb417804
Simplify db__message_store() interface.
2020-07-10 16:09:33 +01:00
Roger A. Light
3e595d557e
Add db__msg_store_free() for freeing stored messages.
2020-07-10 13:31:37 +01:00
Roger A. Light
e3e8dc4ea4
Allow send__pub{ack,rec,rel,comp} to send properties.
2020-07-10 12:29:53 +01:00
Roger Light
318dead6bf
Function to allow plugins to publish messages.
2020-06-30 10:31:34 +01:00
Roger A. Light
e54bac2a54
No need to pass separate username/password here.
2020-06-30 10:21:43 +01:00
Roger A. Light
73cc271d37
Allow auth plugin to see all logins, unless accepted by password file.
2020-06-30 10:07:54 +01:00
Roger A. Light
2e32634a95
DLT logging is now configurable at runtime with log_dest dlt
.
...
Closes #1735 . Thanks to Brian Orpin.
2020-06-30 00:51:57 +01:00
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>
2020-06-17 15:54:24 +01:00
Roger A. Light
4b541ad5ca
Fix usage message not mentioning v5.0.
...
Closes #1713 . Thanks to whnr.
2020-06-09 15:42:51 +01:00
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.
2020-05-25 23:38:13 +01:00
Roger A. Light
eae8c9aab4
Fix check when loading persistence file of a different version
...
Closes #1684 . Thanks to grekhss.
2020-05-15 22:11:26 +01:00
Roger A. Light
762ad432e8
Fix support for openssl 3.0
2020-05-12 13:39:49 +01:00
Roger A. Light
e755827f4f
Free outgoing client messages even for non-bridges.
2020-05-05 15:37:04 +01:00
Roger A. Light
ee7d1981ff
Merge branch 'rfc-bridge-local-clean' of git://github.com/etactica/mosquitto into etactica-rfc-bridge-local-clean
2020-05-05 14:33:02 +01:00
Roger A. Light
d3247a830a
Fix memory leak when connecting clients are rejected.
2020-05-05 14:31:13 +01:00
Roger A. Light
bfc82ea91a
Fix incorrect check.
2020-05-05 13:13:24 +01:00
Roger A. Light
4960fc0702
Don't disconnect clients that are already disconnected.
...
This prevents the session expiry being extended on SIGHUP.
Closes #1521 . Thanks to Christoph Krey.
2020-05-01 22:45:40 +01:00
Roger A. Light
c5d6f32341
Be more tolerant when loading persistence files.
2020-05-01 21:51:07 +01:00
Roger A. Light
eeaafed485
Fix memory leak when connecting clients rejected.
2020-04-30 17:31:13 +01:00
Roger A. Light
ff2b111cb3
Fix minor memory leak when load bridge prefixes.
2020-04-30 17:06:51 +01:00
Roger A. Light
4392320bc3
Fix memory leak when cleaning all shared subs.
2020-04-30 16:58:46 +01:00
Roger A. Light
ea47f6b0dc
Clearer client disconnection message.
2020-04-28 10:42:49 +01:00
Roger A. Light
5908585afd
Fix mosquitto_passwd -b not updating passwords for existing users
...
Closes #1664 . Thanks to Leon Kiefer.
2020-04-26 22:44:57 +01:00
Roger A. Light
3758e0c328
Fix mosquitto_passwd not being able to create pwfile with -b.
2020-04-08 12:38:15 +01:00
Roger A. Light
cef9d891ae
Tidy up main().
2020-04-08 11:34:31 +01:00
Roger A. Light
c72dd39f92
Allow MQTT v5.0 outgoing bridges to fall back to MQTT v3.1.1
...
This applies if connecting to a v3.x only broker.
2020-04-02 10:26:36 +01:00
Roger A. Light
de25ff694e
Report invalid bridge prefix+pattern combinations at config parsing time
...
Rather than letting the bridge fail later.
Issue #1635 . Thanks to pokerazor.
2020-03-28 22:44:35 +00:00
Roger A. Light
4ab0f4bd39
Fix bundled deps option not being propagated to library.
...
Issue #1641 .
2020-03-27 21:44:19 +00:00
Roger Light
986bf89f47
Prototype separate poll/epoll files.
2020-03-26 10:35:02 +00:00
Roger A. Light
c3e824ee22
Remove duplicate strlen() calls.
2020-03-26 09:32:01 +00:00
Roger A. Light
95faff36aa
Fix ref counting of retained messages.
2020-03-26 09:11:50 +00:00
Roger A. Light
0b7b7389b0
Remove duplicate UTF-8 check
...
All strings are already validated in packet__read_string().
2020-03-26 09:09:11 +00:00
Karl Palsson
07d73c7e3a
bridge: support bridge local clean session
...
This adds the ability to separating bridge clean session settings between
the local and remote endpoints. Some broker implmentations refuse to allow
non-clean sessions, as they don't support storing messages to be sent to
the connecting broker. However, this doesn't mean that the local
broker can't be queueing messages to send _out_ to the remote broker.
This PR adds a new bridge connection setting, local_cleansession, that
allows controlling this split. Naming is chosen to be local_ in keeping
with the other local_ settings for bridges.
A test for the six cases of queued/not queued messages in both
directions is added, but v5 testing is currently disabled. The changes
to support the split are ~independent of protocol version.
Signed-off-by: Karl Palsson <karlp@etactica.com>
2020-03-20 12:35:06 +00:00
Michael
24e34434a4
Move SSL prepare and accept operations out of deep loop
...
Since all resources are ready, do not need lookup again.
Signed-off-by: Michael Liu <michael.liu.point@gmail.com>
2020-03-12 12:25:24 +00:00
Michael Liu
7953649b1c
Fix potential memory leak.
...
WebSocket context may lost since db->ll_for_free = NULL; operation on the bottom of context__free_disused() function.
Signed-off-by: Michael Liu <michael.liu.point@gmail.com>
2020-03-12 12:09:00 +00:00
Roger A. Light
c84d175b3d
Fixes for the poor souls stuck on <c99.
...
Closes #1622 .
2020-03-12 10:29:11 +00:00
Roger A. Light
c175e836a7
Print openssl error when unable to load server key.
2020-03-05 10:54:13 +00:00
Roger A. Light
d96543c0b8
Merge branch 'fixes' into develop
2020-03-03 12:54:57 +00:00
Roger A. Light
b0a065f790
Update changelog. Release page. Bump copyright.
2020-02-27 23:26:58 +00:00
Roger A. Light
0c68c20d2b
Fix mosquitto_client_protocol()
returning incorrect values.
2020-02-27 15:01:41 +00:00
Roger A. Light
db02c9162d
Add plugin that prints out calls, to help debugging.
2020-02-27 15:01:41 +00:00
Roger A. Light
032af6bf69
Add missing header
2020-02-27 15:01:41 +00:00
Roger A. Light
c4e41f3444
Back port db_dump from develop.
...
Closes #1519 . Thanks to Christoph Krey.
2020-02-06 16:44:04 +00:00
Roger A. Light
2a8c1d03f5
Merge branch 'coverity-fixes' into fixes
2020-02-06 16:20:52 +00:00
Gianfranco Costamagna
078ad752cd
cmake: add ADNS enable/disable dynamic support
...
Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
2020-02-06 15:24:09 +00:00
Gianfranco Costamagna
e9a7150031
Bugfix: enabling DLT was overriding everything else on linker flags because of error in cmake set keyword
...
Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
2020-02-06 15:21:40 +00:00
Roger A. Light
07c54627e9
Print OpenSSL errors in more situations
...
Covers when loading certificates fails, or there are ENGINE problems.
Closes #1552 . Thanks to Michael Richardson.
2020-02-04 16:59:29 +00:00
Roger A. Light
27b4518d7e
Improve password file parsing in the broker and mosqitto_passwd.
...
Closes #1584 . Thanks to panava.
2020-02-04 16:38:51 +00:00
Roger A. Light
ed5db1bd6b
Fix bind_interface
not working for the default listener.
...
Closes #1533 . Thanks to Markus Gothe.
2020-01-30 22:48:15 +00:00
Roger A. Light
e188a6b500
More whitespace trimming fixes/consolidation.
2020-01-30 22:26:13 +00:00
Roger A. Light
32969169f7
Trim whitespace from acl topics.
2020-01-30 19:55:55 +00:00
Roger A. Light
70fd600c3a
Fix trailing whitespace not being trimmed on acl users.
...
Closes #1539 . Thanks to CliveJL and LeonPoon.
2020-01-30 19:52:46 +00:00
Roger A. Light
9a0de5ef61
Free log_timestamp_format on exit.
...
Closes #1523 . Thanks to Basavesh Shivakumar.
2020-01-30 16:19:10 +00:00
Roger A. Light
11ece604c4
Merge branch 'bugfix-MemLeak_in_handle_unsubscribe' of git://github.com/panava/mosquitto into panava-bugfix-MemLeak_in_handle_unsubscribe
2020-01-30 14:22:12 +00:00
Roger A. Light
3220790790
Merge branch 'bugfix-MemoryLeak_in_persist_read' of git://github.com/panava/mosquitto into panava-bugfix-MemoryLeak_in_persist_read
2020-01-30 12:40:16 +00:00
Roger A. Light
50735afb5b
Fix for internal logging not printing.
2020-01-29 16:25:56 +00:00
Panagiotis Vasilikos
618413e1d2
Resource leak in persist_read.c
...
Reason: In lines 435 and 439, the function returns without calling closing
fptr which was opened at line 399.
Fix: I added fclose(fptr) statements before each of the returns.
Signed-off-by: Panagiotis Vasilikos <panagiotis.vasilikos@alexandra.dk>
2020-01-29 13:30:24 +01:00
Roger A. Light
9ae38788dc
Fix config->user not being freed on exit.
...
Closes #1564 . Thanks to back1127.
2020-01-28 16:52:14 +00:00
Roger A. Light
812c0636d5
Satisfy valgrind when exiting on error.
...
This is when due to not being able to open a listening socket, solved by
calling freeaddrinfo in the error cases.
Closes #1565 . Thanks to back1127.
2020-01-28 16:12:45 +00:00
Roger A. Light
e7c9f009bd
Strip whitespace from end of config file string options.
...
Closes #1566 . Thanks to kollokollo.
2020-01-28 16:04:25 +00:00
Panagiotis Vasilikos
49bf788862
Memory leak in handle_unsubscribe.c
...
Reason: In line 70, the memory allocation for the pointer reasons_codes may
result to a memory leak due to the many returns (e.g as the one in line 78)
occuring in the program's path until reaching the mosquitto__free at line 122.
Fix: I added a mosquitto__free(reason_codes) statement before each return
statement that could result to a memory leak
Signed-off-by: Panagiotis Vasilikos <panagiotis.vasilikos@alexandra.dk>
2020-01-28 16:31:15 +01:00
Panagiotis Vasilikos
0f7052564c
Memory leak in handle_unsubscribe.c
...
Reason: In line 70, the memory allocation for the pointer reasons_codes may
result to a memory leak due to the many returns (e.g as the one in line 78)
occuring in the program's path until reaching the mosquitto__free at line 122.
Fix: I moved the memory allocation code block (lines 69-73) just before
the line 102. This is the first place the pointer reason_codes is used, while
the following mosquitto__free operators free the allocated memory correctly.
Signed-off-by: Panagiotis Vasilikos <panagiotis.vasilikos@alexandra.dk>
2020-01-24 16:34:56 +01:00
Roger A. Light
5528dde56a
Fix possible null dereferences.
2020-01-23 12:51:12 +00:00
Roger A. Light
05ec02b3f3
Remove dead values.
2020-01-23 10:55:49 +00:00
Roger A. Light
18f0508a6e
Fix dereference before null check.
...
Coverity Scan 1405815.
2020-01-23 10:08:26 +00:00
Roger A. Light
db62f9843f
Fix unused value being overwritten.
...
Coverity Scan 1400727.
2020-01-23 09:35:28 +00:00
Roger A. Light
d452ea138b
Use presence of password file as indicator for authentication checks.
...
Previously, authentication checks would only take place if usernames
were defined in the password file.
Closes #1545 . Thanks to Timothy Godfrey.
2019-12-20 00:19:17 +00:00
Roger A. Light
b6119bb759
Check ACL patterns for validity when loading.
...
Closes #1539 . Thanks to Leon Poon.
2019-12-18 21:39:27 +00:00
Roger A. Light
e5561cd09e
Fix db_dump compilation.
...
Closes #1520 .
2019-12-12 16:54:23 +00:00
Roger A. Light
c8789180f3
Fix session expiry with very large expiry intervals.
...
Closes #1525 . Thanks to Christoph Krey.
2019-12-12 09:40:37 +00:00
Roger A. Light
8a6f179c83
Fix comment.
2019-12-11 15:15:40 +00:00
Roger A. Light
3f0c202aa5
Reduce heap allocation churn when tokenising topics.
2019-12-11 13:23:59 +00:00
Roger A. Light
c0443637e8
Merge branch 'master'
...
Conflicts:
ChangeLog.txt
config.mk
src/context.c
src/loop.c
src/subs.c
test/broker/01-connect-bad-packet.py
test/broker/02-subpub-qos1-bad-pubcomp.py
test/broker/02-subpub-qos1-bad-pubrec.py
test/broker/02-subpub-qos2-bad-puback-1.py
test/broker/02-subpub-qos2-bad-puback-2.py
test/broker/02-subpub-qos2-bad-pubcomp.py
test/broker/02-subpub-qos2.py
test/broker/07-will-null-topic.py
2019-12-03 13:59:05 +00:00
Roger A. Light
6dec2b468b
Remove redundant expiry checks
...
This is all now handled in session_expiry.c, through session expiry interval/time.
2019-11-28 16:19:57 +00:00
Roger A. Light
a46b45b006
Fix persistent_client_expiration not being used
...
Closes #1494 . Thanks to Christoph Krey.
2019-11-28 16:17:41 +00:00
Roger Light
d92360dd8e
Split sub and retain trees.
2019-11-22 14:07:15 +00:00
Roger A. Light
d003fed383
MQTT v5 bridges can handle "retain-available" being false.
2019-11-07 13:31:42 +00:00
Roger A. Light
2af260ba58
Add bridge_outgoing_retain
option
...
This allows outgoing messages from a bridge to have the retain bit
completely disabled, which is useful when bridging to e.g. Amazon or
Google.
2019-11-07 11:59:29 +00:00
Roger A. Light
05171b266d
Fix TLS Websockets clients not receiving messages.
...
This can occurs after one client takes over a previous connection.
Closes #1489 . Thanks to Bas Verhoeven.
2019-11-06 22:25:33 +00:00
Roger A. Light
b622aaeee4
Fix messages with an expiry interval missing the property.
...
They would be be sent without an expiry interval property just before
they were expired.
Closes #1464 . Thanks to Dustin Sallings.
2019-10-31 12:56:13 +00:00
Roger A. Light
06a27e799f
Fix retained messages with an expiry interval not being expired.
...
This happened after being restored from persistence.
Closes #1464 . Thanks to Dustin Sallings.
2019-10-31 12:54:20 +00:00
Roger A. Light
d49988fa6f
Rejig unix socket support.
2019-10-30 21:48:53 +00:00
Roger A. Light
253326dcc9
Fix problems with reloading config when per_listener_settings
was true.
...
Closes #1459 . Thanks to Thomas Markin Klein.
2019-10-15 15:32:24 +01:00
Roger A. Light
b660283e64
Basic MQTT v5 support for bridges.
...
This gives equivalent behaviour as for v3.1.1/v3.1 bridges, there is no extra functionality yet.
2019-10-09 10:54:44 +01:00
Roger A. Light
847c3f1f8b
Move bridge on connect code to bridge.c.
2019-10-09 10:51:42 +01:00
Roger A. Light
1ab19f2b3d
Make error messages clearer when bridge misconfigured
2019-10-09 10:06:31 +01:00
Roger A. Light
17c32d89d9
Restrict access to unix socket.
2019-10-09 09:55:11 +01:00
Roger A. Light
43a692dfbe
Add new files to cmakelists.
2019-10-08 20:56:56 +01:00
Roger A. Light
499e2f2e98
Add support for unix sockets to broker, lib, and clients.
2019-10-08 20:55:31 +01:00
Roger A. Light
fad184c9c2
Bridge remapping refactoring and tests.
2019-10-03 16:46:15 +01:00
Roger A. Light
8463c33720
Refactor property remaining length calculation.
2019-10-03 10:36:24 +01:00
Roger A. Light
cfacd961c9
Only a single CRL could be loaded at once. This has been fixed.
...
Closes #1442 . Thanks to charlemagnelasse.
2019-10-02 13:37:52 +01:00
Roger A. Light
c471dfb201
Fix sub topics being limited to 200 chars instead of 200 levels
...
Closes #1441 . Thanks to Christoph Krey.
2019-10-02 13:00:01 +01:00
Roger A. Light
b942b73b6d
Fix incorrect memory tracking causing problems with memory_limit option.
...
Closes #1437 . Thanks to Guillaume Bour.
2019-10-01 16:57:54 +01:00
Roger A. Light
4db1e80410
More allow_zero_length_clientid fixes.
...
Closes #1429 . Thanks to Dustin Sallings.
2019-09-26 11:53:58 +01:00
Roger A. Light
539c1b9bcb
Tests for zero length client id, plus fix for one case where it was allowed
2019-09-26 11:14:52 +01:00
Roger A. Light
54ed3c0fc9
Merge branch 'master' into develop
2019-09-25 19:09:10 +01:00
Roger A. Light
6a01453ce0
Build fixes.
2019-09-25 12:17:17 +01:00
Roger A. Light
9584463c75
Fix potential crash when reloading config.
...
Closes #1424 , #1425 . Thanks to JinPingChng and peteakalad.
2019-09-25 11:24:47 +01:00
Roger A. Light
1a8c44b84f
Fix regression on use of mosquitto_connect_async()
not working.
...
Closes #1415 and #1422 . Thanks to Karl Palsson, Till Zimmermann and Liam Fry.
2019-09-24 20:15:04 +01:00
Roger A. Light
096380fbdc
Add workaround for libwebsockets 3.2.0.
2019-09-24 10:21:51 +01:00
Roger A. Light
2fd7f5270a
mosquitto_passwd returns 1 on an error condition
...
When attempting to update a user that does not exist.
Closes #1414 . Thanks to kdgde.
2019-09-17 09:37:16 +01:00
Roger A. Light
1066750931
Restrict topic hierarchy to 200 levels to prevent possible stack overflow.
...
Closes #1412 . Thanks to Ryan Shaw.
2019-09-15 22:57:36 +01:00
Roger A. Light
0a0ad4cd6c
Fix for old libwebsockets versions.
2019-09-12 17:15:46 +01:00
Roger A. Light
ce68040f22
Refuse to compile with lws 3.2.0.
2019-09-12 14:44:27 +01:00
Roger A. Light
8f6ac1b64a
Fix for websockets regression.
2019-09-12 13:31:01 +01:00
Roger A. Light
5941291bd5
Fix build WITH_TLS=no
2019-09-11 16:16:38 +01:00
Roger A. Light
9ad5fe7d95
Fix repeated "Error in poll" messages on Windows.
...
This occurs when only websockets listeners are defined.
Closes #1391 . Thanks to stopak.
2019-09-11 15:53:36 +01:00
Roger A. Light
4dc98c4cef
Fix CRL file not being reloaded on HUP.
...
Closes #35 .
2019-09-11 09:08:02 +01:00
Roger Light
31f09d1206
Merge pull request #1405 from woelfman/fix-engine-key-uri
...
Fix usage of tls_engine and tls_keyform.
2019-09-08 20:44:19 +01:00
Matt Woelfel
39803e538f
Fix usage of tls_engine and tls_keyform.
...
The current implementation does not properly forward the engine
parameters to OpenSSL causing OpenSSL to incorrectly attempt to open the
engine key uri as a file.
Sponsored-by: Trimble, Inc.
Signed-off-by: Matt Woelfel <matt@woelfware.com>
2019-09-07 18:56:59 -05:00