Commit Graph

1046 Commits

Author SHA1 Message Date
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
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