Roger A. Light
175794826b
[456899] Broker: Add bridge_attempt_unsubscribe option.
...
The bridge_attempt_unsubscribe option has been added, to allow the sending
of UNSUBSCRIBE requests to be disabled for topics with "out" direction.
Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=456899
2015-01-07 21:50:10 +00:00
Roger A. Light
778bd4ca25
Clear store variable correctly here.
2015-01-06 17:37:56 +00:00
Roger A. Light
0e72d3cc32
Should check acl result for lack of success, not presence of error.
2015-01-06 17:35:46 +00:00
Roger A. Light
f8f794c531
Allow expiring clients to be cleaned up.
2015-01-06 17:35:12 +00:00
Roger A. Light
b30adbf792
Remove incorrectly committed file.
2015-01-06 11:25:25 +00:00
Roger A. Light
fb588ef434
Print dlerror on library loading errors.
2014-11-20 22:33:40 +00:00
Roger A. Light
85a294922e
Protect stored messages from removal when queing.
2014-11-20 21:13:21 +00:00
Roger A. Light
5b6f6976c7
Fix use of "dup" with pubrel, subscribe, unsubscribe.
...
Thanks to Paolo Patierno.
2014-11-19 21:28:52 +00:00
Roger A. Light
2ce4d94282
Fix dereferencing of msg store items.
2014-11-19 20:59:10 +00:00
Roger A. Light
db3c016fdd
Don't use bridge hash in each client.
...
Store a DB wide array of bridges. There shouldn't be many of them, so
iterating/searching isn't a problem. Saves 56 bytes in the client
struct.
2014-11-18 23:34:54 +00:00
Roger A. Light
1e64bb171a
More memory efficient message store than with hashes.
...
Also frees messages from the message store after removing...
2014-11-18 19:12:08 +00:00
Roger A. Light
d30d711c3b
Improve struct layouts for memory usage.
2014-11-18 07:42:49 +00:00
Roger A. Light
ea8537c048
Remove unused messages from store immediately.
...
This removes the need for *store_clean*.
2014-11-17 23:46:02 +00:00
Roger A. Light
4374170c40
Use hash for message store to speed up loading.
...
Comes at the expense of increased memory usage. This could be countered
by using a hash just for loading (increased memory usage during loading,
reduced afterwards) but this approach does allow the immediate removal
of messages from the store.
2014-11-17 22:54:39 +00:00
Roger A. Light
9b9f1c7613
Remove unnecessary callocs.
2014-11-17 22:00:00 +00:00
Roger A. Light
975b127d17
Sanitise password file argv input.
2014-11-17 21:00:33 +00:00
Roger A. Light
36f88d902d
Fix errors from big code import.
2014-11-12 20:47:16 +00:00
Roger A. Light
00d951e6d6
Allow plugins to call mosquitto_log_printf() (Linux only at the moment).
2014-11-03 08:45:56 +00:00
Roger A. Light
fc1e514ad4
Add log_facility for non-Windows OSs.
2014-11-02 21:49:33 +00:00
Roger A. Light
0a86aee5fb
Authentication plugin acl_check function is passed local_username for local bridges.
2014-10-29 22:11:18 +00:00
Roger A. Light
ab49b96db1
Windows related fixes.
2014-10-26 21:17:08 +00:00
Roger A. Light
6524115f45
Error if websockets not available.
2014-10-25 00:46:58 +01:00
Roger A. Light
052c2d7766
Fix for Windows.
2014-10-24 22:49:48 +01:00
Roger A. Light
041f60c03e
Make bridge connections non-blocking for TLS connections.
2014-10-24 22:39:09 +01:00
Roger A. Light
c92e2f5581
Declare variables before code.
2014-10-24 21:57:33 +01:00
Roger A. Light
a1f18323d1
Make bridge connections non-blocking for non-TLS connections.
2014-10-24 21:28:24 +01:00
Roger A. Light
4ff6a6aa49
Remove duplicate strlen check.
2014-10-23 17:30:09 +01:00
Roger A. Light
66443c14bd
Assign to NULL to prevent double free later.
2014-10-21 23:11:31 +01:00
Roger A. Light
7a2dd634cb
Protect against possible NULL dereference after unsubscribing.
2014-10-20 18:01:45 +01:00
Roger A. Light
372b64a290
More "client has disconnected but is not freed" protections.
2014-10-17 00:08:10 +01:00
Roger A. Light
c8dffcbfbb
Fixes for clientid stealing situation.
2014-10-16 23:48:56 +01:00
Roger A. Light
02be4965ea
Don't rearrange leaves here until we are sure we have all the memory allocated.
2014-10-16 23:18:12 +01:00
Roger A. Light
eb01459571
Protect against client->id NULL dereference.
2014-10-16 23:06:47 +01:00
Roger A. Light
065c6356d4
Don't derefence NULLs.
2014-10-16 23:04:26 +01:00
Roger A. Light
7746427b07
Record client subs correctly.
2014-10-16 22:35:05 +01:00
Roger A. Light
43b1ea8050
Memory leak and id stealing fixes.
2014-10-12 23:58:49 +01:00
Roger A. Light
e3bf10cd9a
Change the way that new clients with match client ids are dealt with.
...
This change means that the connection isn't swapped from new context to
old, which makes dealing with websockets lots easier. It does require
that clients storing a list of their subscriptons.
2014-10-12 11:38:21 +01:00
Roger A. Light
d2dbe16d68
Client structs store sub information to make _subs_clean_session more efficient.
2014-10-09 23:28:16 +01:00
Roger A. Light
070d783c9f
Merge 1.3.2-1.3.5 into 1.4.
2014-10-12 11:17:13 +01:00
Roger A. Light
1a47f86648
Typo fix.
2014-10-08 22:48:47 +01:00
Roger A. Light
8cb9b195e5
When using -v and the broker receives a SIGHUP, verbose logging was being disabled. This has been fixed.
2014-10-08 21:38:01 +01:00
Roger A. Light
bad7ec75f0
Temporarily disable ACL checks on subscriptions when using MQTT v3.1.1.
...
This is due to the complexity of checking wildcard ACLs against wildcard
subscriptions. This does not have a negative impact on security because
checks are still made before a message is sent to a client. Fixes bug
Thanks to Jan-Piet Mens and Christoph Krey.
2014-10-08 21:16:34 +01:00
Roger A. Light
429c892557
Fix saving persistent database on Windows.
...
Thanks to Daniel Degasperi.
2014-10-08 20:51:17 +01:00
Roger A. Light
43556537e3
Don't ask for client cert when require_certificate is false.
2014-10-07 23:20:46 +01:00
Roger A. Light
4a19d9ae3a
Fix possible memory leak when using a topic that has a leading slash.
...
Fixes bug #1360986 .
2014-10-05 21:24:08 +01:00
Roger A. Light
950c4ed9c6
Check return value of fseek for errors.
2014-09-23 00:45:12 +01:00
Roger A. Light
84214bcd99
Simplify appending of topics when tokenising. Helps remove dead code.
2014-09-23 00:42:25 +01:00
Roger A. Light
aa2e6a8d29
Fix possible NULL derefence.
2014-09-23 00:35:51 +01:00
Roger A. Light
db9d6b9f3d
Fix potential memory leak from context->current_out_packet.
2014-09-23 00:32:34 +01:00
Roger A. Light
154b2fc264
Must remove memory reference here.
2014-09-22 23:37:19 +01:00
Roger A. Light
dcd469c177
Use own linked list for storing disused contexts for freeing.
...
Seemed to be a problem with getting it to work under a hash and there
isn't really any need for a hash.
2014-09-22 23:35:09 +01:00
Roger A. Light
2a922e9f06
Fix verbose logging on reload.
2014-09-22 23:05:29 +01:00
Roger A. Light
e561b5ea08
Windows fix.
2014-09-19 10:43:14 +01:00
Roger A. Light
7fb629d818
Fix potential leak.
2014-09-19 00:56:37 +01:00
Roger A. Light
58c857c473
Fix for windows.
2014-09-19 00:35:10 +01:00
Roger A. Light
58a7565a2b
Check http request directories on Windows.
2014-09-17 23:14:22 +01:00
Roger A. Light
99779c03c7
Fix reporting of local bridge status.
2014-09-17 22:40:49 +01:00
Roger A. Light
65526d2746
No need to call lws_partial_buffered() here. It is never set at the start of a callback.
2014-09-17 22:27:18 +01:00
Roger A. Light
f61a8cbf74
Get address for websockets clients.
2014-09-17 22:19:45 +01:00
Roger A. Light
91fa1c9625
Disable ipv6 websockets.
2014-09-17 21:55:02 +01:00
Roger A. Light
2bf7a8fb13
Prevent NULL derefencing and accessing of freed memory.
2014-09-17 21:53:39 +01:00
Roger A. Light
3d58f5ed82
Some minor memory leak fixes.
2014-09-17 21:50:08 +01:00
Roger A. Light
1fb5a3edc6
Use hash counts to calculate numbers of clients.
2014-09-17 00:03:14 +01:00
Roger A. Light
3eead8c507
retained_ and subscription_count only used with sys tree.
2014-09-16 23:48:26 +01:00
Roger A. Light
7b1ee68ef1
Remove compilation warnings for various configurations.
2014-09-15 22:13:13 +01:00
Roger A. Light
dd36c4b273
Don't attempt to find real path of NULL.
2014-09-15 21:43:44 +01:00
Roger A. Light
9286da192e
Fix unused var.
2014-09-14 18:12:30 +01:00
Roger A. Light
f9951595c8
Fix missing headers.
2014-09-14 18:08:09 +01:00
Roger A. Light
06bec1083d
Expose mosquitto_pub_topic_check() and mosquitto_sub_topic_check().
2014-09-10 15:57:20 +01:00
Roger A. Light
3c5ca95c81
File serving from http on *nix.
2014-09-08 23:25:02 +01:00
Roger A. Light
b84ca80052
Skeleton callback_http() function.
2014-09-08 18:39:51 +01:00
Roger A. Light
f500ff78b8
no_buffer_all_partial_tx not in latest LWS.
2014-09-08 18:24:12 +01:00
Roger A. Light
c4e7233159
Add http_dir option (not yet used).
2014-09-08 18:21:53 +01:00
Roger A. Light
d75473ec63
Fix possible memory leaks.
...
Thanks to Johann Haarhoff.
2014-09-06 21:51:59 +01:00
Roger A. Light
b01b0b581f
Produce error if unable to create WS listener.
2014-08-19 16:29:42 +01:00
Roger A. Light
ef573448f4
Another bridge notification fix.
2014-08-19 11:29:24 +01:00
Roger A. Light
1fdc4ceee6
Check expiration every hour regardless of the duration.
2014-08-19 01:11:22 +01:00
Roger A. Light
76724c790e
Disconnect expired clients correctly.
2014-08-19 00:36:09 +01:00
Roger A. Light
580cd722dc
Remote/local bridge fixes.
2014-08-16 23:14:41 +01:00
Roger A. Light
b937a043e7
Rename remote bridge identifiers to remote_.
2014-08-16 21:31:12 +01:00
Roger A. Light
950db12c74
Don't free local bridge clients on disconnect.
2014-08-05 09:06:50 +01:00
Roger A. Light
56ff849c65
Backout changeset c7589b77956c5bac076ae23905fbfc8902d69dc5.
2014-08-02 21:48:08 +01:00
Roger A. Light
e6239e1b3c
Backout changeset 76f3a755c6548690f69f2256c8b83c7a0f0f9a95.
2014-08-02 21:43:04 +01:00
Roger A. Light
d8a3ab7d56
Don't ask client for certificate when require_certificate is false.
...
Thanks to Jan-Piet Mens.
2014-08-02 21:40:54 +01:00
Roger A. Light
8e7736b78e
Fix incorrect handling of anonymous bridges on the local broker.
...
Thanks to Jan-Piet Mens.
2014-08-01 21:34:21 +01:00
Roger A. Light
6af0c236e8
Each listener requires its own copy of the protocols struct.
2014-07-28 14:14:36 +01:00
Roger A. Light
77999c7fd0
Fix incorrect commit.
2014-07-13 21:48:33 +01:00
Roger A. Light
e5aa843ec7
Don't allow access to clients when authenticating if a security plugin returns an application error. Fixes bug #1340782 .
...
Thanks to Charlie Davis.
2014-07-13 21:20:18 +01:00
Roger A. Light
8efb4f9334
Fix bug #1324411
...
Thanks to chenzhenianqing.
2014-07-13 14:28:24 +01:00
Roger A. Light
885d8ca5db
When a durable client reconnects, its queued messages are now checked against ACLs in case of a change in username/ACL state since it last connected.
...
Thanks to "web1".
2014-07-13 14:18:08 +01:00
Roger A. Light
45fa820989
Anonymous clients are no longer accidently disconnected from the broker after a SIGHUP.
2014-07-13 14:11:43 +01:00
Roger A. Light
8b2effcc36
Don't check for POLLERR or POLLNVAL.
...
Errors will be caught when trying to read anyway, and doing these checks
here means that sockets may be closed prematurely.
2014-07-08 23:43:21 +01:00
Roger A. Light
0ff0cfb3d3
Need to include bridges here.
2014-07-08 23:29:16 +01:00
Roger A. Light
9bb336bbf3
Use do_disconnect() for websockets.
2014-07-08 23:18:11 +01:00
Roger A. Light
95a4ec431d
Don't try to disconnect twice.
2014-07-08 23:16:34 +01:00
Roger A. Light
bb1a69b7d7
Disconnect clients consistently.
2014-07-08 23:07:19 +01:00
Roger A. Light
22094aa00d
Memory checks.
2014-07-04 21:32:27 +01:00
Roger A. Light
3fd1dc477f
Fix defects identified by Coverity.
2014-07-03 21:55:25 +01:00
Roger A. Light
5ac576f2ab
Request write callback if there is still more to send.
2014-07-03 18:48:40 +01:00
Roger A. Light
405b7f0aab
Don't free here, leads to potential double free.
2014-07-03 17:37:31 +01:00
Roger A. Light
0856e9519d
Need to assign ws_context here.
2014-07-03 11:32:54 +01:00
Roger A. Light
399453837d
Log websockets listeners being opened.
2014-07-03 11:32:29 +01:00
Roger A. Light
13f94f3511
More reconnect fixes.
2014-07-03 01:00:57 +01:00
Roger A. Light
2b300b718b
Fix double free for websockets with bad auth.
2014-07-02 20:57:04 +01:00
Roger A. Light
0fb064e0b4
Fix clean session for reconnecting clients.
2014-07-02 20:44:08 +01:00
Roger A. Light
fe5dba5887
Add use_username_as_clientid.
2014-07-02 00:09:50 +01:00
Roger A. Light
864f1f0d23
Initialise variable.
2014-06-30 23:37:37 +01:00
Roger A. Light
84619c296d
Fix building for WITH_BRIDGE=no.
2014-06-30 23:37:03 +01:00
Roger A. Light
d75903b0ae
Fix reconnect support for websockets.
2014-06-30 23:30:43 +01:00
Roger A. Light
d60e44ec1b
Handle reconnects for websockets.
2014-06-30 06:58:56 +01:00
Roger A. Light
542ebb2480
Free peer certificate after use.
2014-06-30 05:33:41 +01:00
Roger A. Light
bdb3e74100
More memory fixes.
2014-06-29 23:16:10 +01:00
Roger A. Light
15efd2d072
Various memory fixes.
2014-06-28 01:38:58 +01:00
Roger A. Light
ff5fd26e13
Free base64 memory properly.
2014-06-27 22:59:50 +01:00
Roger A. Light
7f18ced0b4
Close websockets connection if we are set to disconnecting.
2014-06-26 22:13:22 +01:00
Roger A. Light
482d604598
Only remove from hash if a valid socket (i.e. if present)
2014-06-23 23:51:16 +01:00
Roger A. Light
3577dbf332
Add sock hash earlier to avoid crashes.
2014-06-23 23:47:48 +01:00
Roger A. Light
0fc0e13a8f
Can't access mosq after free.
2014-06-23 18:44:42 +01:00
Roger A. Light
19056e6d4c
Removed $SYS/broker/changeset.
2014-06-23 18:37:15 +01:00
Roger A. Light
480d8a08d0
Count disconnected clients on persistence restore.
2014-06-23 18:29:25 +01:00
Roger A. Light
749ea76678
Typo.
2014-06-23 18:20:32 +01:00
Roger A. Light
cc33a6e5af
Do proper cleanup, including websockets.
2014-06-23 18:18:29 +01:00
Roger A. Light
764b7e0a91
Use hash functions to store client data.
2014-06-23 17:57:35 +01:00
Roger A. Light
7911db1a1e
Simplify.
2014-06-23 09:43:32 +01:00
Roger A. Light
bd2aa2f426
Add batch mode to mosquitto_passwd.
2014-06-20 20:59:04 +01:00
Roger A. Light
9a9dba6cd5
Support for mqttv3.1 subprotocol string.
2014-06-20 10:52:10 +01:00
Roger A. Light
29e65e4965
Anonymous clients are no longer accidently disconnected from the broker after a SIGHUP.
2014-06-18 23:17:40 +01:00
Roger A. Light
4025fad5aa
libuuid is used to generate client ids, where it is available, when an MQTT v3.1.1 client connects with a zero length client id.
2014-06-15 01:07:05 +01:00
Roger A. Light
731391bcb3
Separate function for generating a random client id.
2014-06-15 00:37:30 +01:00
Roger A. Light
0461c08fdf
use_identity_as_username now no longer affects non-TLS listeners.
2014-06-14 23:42:24 +01:00
Roger A. Light
af49fc556a
When a durable client reconnects, its queued messages are now checked against ACLs in case of a change in username/ACL state since it last connected.
...
Thanks to "web1".
2014-06-13 23:07:00 +01:00
Roger A. Light
930b917217
Save disconnect_t for connected clients when the broker exits.
2014-06-13 22:34:04 +01:00
Roger A. Light
11631d8d92
Add local_clientid for bridges.
2014-06-10 23:30:15 +01:00
Roger A. Light
aca67a2170
Better function names.
2014-06-08 22:51:36 +01:00
Roger A. Light
e221b37658
Add stats mode for db_dump.
2014-06-05 11:56:32 +01:00
Roger A. Light
7b62bfd7da
Use time() for disconnect_t, CLOCK_MONOTONIC isn't useful over reboots.
2014-06-04 22:14:16 +01:00
Roger A. Light
1ef8575a35
Reset disconnect_t on client reconnect.
2014-06-04 22:13:19 +01:00
Roger A. Light
ad43754b62
Log username in single quotes.
2014-06-03 17:06:11 +01:00
Roger A. Light
4430228855
Be consistent about removing listener counts on socket close.
2014-06-03 16:21:46 +01:00
Roger A. Light
7cef936ba6
Logging fixes.
2014-06-03 15:16:27 +01:00
Roger A. Light
c8a0786dea
TLS websockets support.
2014-06-03 02:10:55 +01:00
Roger A. Light
6a7f77d2a8
More intelligent client counting.
2014-06-02 22:08:40 +01:00
Roger A. Light
0d80800786
Don't refuse clients with will topic that isn't allowed by acl.
2014-06-02 01:19:48 +01:00
Roger A. Light
ef4b7a52a0
Fix missing headers for WITH_TLS=no.
2014-06-02 01:01:29 +01:00
Roger A. Light
fd7d5ebbb9
Change $SYS/broker/clients/[in]active -> $SYS/broker/clients/[dis]connected
2014-06-02 00:51:40 +01:00
Roger A. Light
e4ddc31295
Fix for MQTT-3.8.4-3.
2014-05-31 23:26:46 +01:00
Roger A. Light
85af9bdd9a
Simplify.
2014-05-31 22:12:20 +01:00
Roger A. Light
87579e0cac
Remove STRICT_PROTOCOL #ifdefs.
2014-05-31 21:53:35 +01:00
Roger A. Light
1984e2e37d
v3.1.1 requires websockets protocol to be mqtt.
2014-05-31 21:24:16 +01:00
Roger A. Light
c13f4c7931
Close config files on error.
2014-05-31 21:12:39 +01:00
Roger A. Light
5da25ae5d9
Add support for "session present" in CONNACK messages for MQTT v3.1.1.
2014-05-31 15:20:40 +01:00
Roger A. Light
0224db85c4
Fix bug #1324411
2014-05-29 15:22:48 +01:00
Roger A. Light
6cc3e7999e
Tidy up.
2014-05-27 22:02:52 +01:00
Roger A. Light
859224224a
Fix potential memory leak.
2014-05-27 21:11:05 +01:00
Roger A. Light
6a03972507
Default to websockets off for cmake.
2014-05-27 19:49:33 +01:00
Roger A. Light
be0cfff969
Fix possible leaks.
2014-05-26 21:23:19 +01:00
Roger A. Light
7d197563bc
Fix for non-lws compilation.
2014-05-26 19:16:59 +01:00
Roger A. Light
1148cdae23
Loop fix.
2014-05-26 18:01:24 +01:00
Roger A. Light
063928bbfe
Merge websockets -> 1.4.
2014-05-26 17:22:52 +01:00
Roger A. Light
e8f07d706d
Per-listener processing of websockets contexts.
2014-05-26 17:09:44 +01:00
Roger A. Light
2db22f3abd
Merge 1.3.2 branch in 1.4 branch.
2014-05-26 13:21:20 +01:00
Roger A. Light
330a7a882e
Add CROSS_COMPILE to Makefiles.
2014-05-25 23:36:38 +01:00
Roger A. Light
58891769c1
Quicker to return here.
2014-05-18 22:45:09 +01:00
Roger A. Light
5ca13a82f9
No need for pthreads in broker code.
2014-05-18 22:44:02 +01:00
Roger A. Light
175299c872
Guard for incomplete code when using websockets.
2014-05-18 22:43:24 +01:00
Roger A. Light
50f9b6bd7a
Enable partial writes for mqtt websockets.
2014-05-18 22:41:22 +01:00
Roger A. Light
7316742cf4
Config support for websockets.
2014-05-18 22:40:20 +01:00
Roger A. Light
9ea161f90e
Return success on libwebsocket_write==0.
2014-05-18 20:54:44 +01:00
Roger A. Light
06625420e2
Fix for local_username/password bridge checks.
2014-05-08 23:27:35 +01:00
Roger A. Light
7b5b5cf43e
Add local_username, local_password for bridge connections to authenticate to the local broker.
2014-05-08 23:27:11 +01:00
Roger A. Light
dc71f9157d
Use $(STRIP) for stripping binaries when installing, to allow easier cross compilation.
...
Thanks to Frank Pagliughi.
2014-05-08 23:18:50 +01:00
Bart Van Der Meerssche
59eb5a65bf
include a switch to disable elliptic curve support in the broker
...
Change-Id: Ic874a92b79b32b4ebd2b8130fefe2b31fddd43b6
Signed-off-by: Bart Van Der Meerssche <bart@flukso.net>
2014-07-03 22:21:40 +02:00
Roger A. Light
fb7dd42e5d
Support for ECDHE-ECDSA family ciphers.
2014-07-03 19:35:37 +01:00
Roger A. Light
40818619fd
Deduplicate tls context code.
2014-07-03 19:33:36 +01:00
Roger A. Light
ae6baad2fa
Default TLS mode now accepts TLS v1.2, v1.1 and v1.0.
2014-05-24 23:18:54 +01:00
Roger Light
e5cc63a89b
Fix subscriptions sometimes being deleted.
...
Fix subscriptions being deleted when clients subscribed to a topic
beginning with a $ but that is not $SYS.
Thanks to David Woodward.
2014-05-08 23:05:34 +01:00
Roger Light
ab15557931
Fix possible crash when using pattern ACLs.
...
Crash may occur for ACLs that do not include a %u and clients that
connect without a username.
Thanks to Karl Palsson.
2014-05-08 23:03:15 +01:00
Roger Light
b8e34b0b05
Ensure that bridges verify certificates by default when using TLS.
...
Thanks to Stefan Borsje.
2014-05-08 22:48:13 +01:00
Roger A. Light
62171a381e
Fix for local_username/password bridge checks.
2014-05-08 19:24:58 +01:00
Roger A. Light
968004d9d8
Add local_username, local_password for bridge connections to authenticate to the local broker.
2014-05-08 18:45:34 +01:00
Roger Light
0364bd1be7
Initial contribution.
2014-05-07 23:27:00 +01:00
Roger A. Light
4bb7a45b71
Crude, hard coded websockets support. No TLS.
2014-05-06 10:47:00 +01:00