Feng Lee
36e7d63d66
Implement subscription sharding.
...
1. Improve the design router, broker and shared_sub
2. New ets tables' design for subscription sharding
2018-12-07 18:20:09 +08:00
Feng Lee
bce1ddc5c4
Implement a hash-based subscription sharding
2018-12-06 18:45:07 +08:00
Feng Lee
d11e734dae
Make some processes hibernate after 1s.
2018-12-05 10:31:11 +08:00
周子博
35e699e54e
Make sure test case of emqx_banned passes
2018-12-04 16:11:25 +08:00
Feng Lee
b4d981daf2
Add a sequence module to generate index for subscription sharding
2018-12-04 15:59:24 +08:00
周子博
b2c3d8366d
Add logs for malformed acl configuration file
2018-12-03 13:57:37 +08:00
Feng Lee
95446ca837
Optimize the route and trie modules.
...
1. Use mnesia:wread/1 to replace mnesia:read/2
2. Update the router supervisor
2018-12-03 11:10:47 +08:00
Gilbert
295a9d692e
Fix the coverage shaky ( #2010 )
2018-11-30 19:16:48 +08:00
spring2maz
14dfe03426
Use git tag for app vsn
2018-11-30 11:03:26 +01:00
Feng Lee
d9470f365f
Optimize read/write concurrency of mnesia/ets tables
2018-11-30 17:46:15 +08:00
Feng Lee
e15e5d1f98
Fix the atom leaks in emqx_reason_codes module.
2018-11-30 17:45:28 +08:00
周子博
fde5fbe73a
Align the code
2018-11-30 17:44:29 +08:00
周子博
ad8b547519
Make batch committing of metrics more elegant
2018-11-30 17:44:29 +08:00
周子博
f315994eb9
Remove unnecessary spec
2018-11-30 17:44:29 +08:00
周子博
c87aabbbeb
Some forgotten changes in last commit
2018-11-30 17:44:29 +08:00
周子博
ea62b15c87
Alter apis provided by emqx_metrics, and use existing timer to commit metrics
2018-11-30 17:44:29 +08:00
周子博
194dbc02c8
Add batch commit for metrics
2018-11-30 17:44:29 +08:00
Feng Lee
21ed012a0c
Add an elegant batch module
2018-11-29 10:13:09 +08:00
Feng Lee
309f3560f3
Bump version to 3.0.0
2018-11-28 16:05:17 +08:00
周子博
5c291ff23e
Fix the 'route_batch_delete' config
2018-11-28 16:04:04 +08:00
周子博
78fdb798f8
Update vsn
2018-11-26 13:51:32 +08:00
Shawn
eeb0cab3e3
Update proc meta-data for empty clientid ( #1980 )
2018-11-23 18:11:46 +08:00
Shawn
6fa183f847
Add CLI for log level ( #1977 )
2018-11-23 11:04:33 +08:00
Shawn
2bd0f16884
Add CLI for log tracer ( #1973 )
2018-11-23 11:01:10 +08:00
tigercl
551d5d99d2
Change 'aquire' to 'acquire' ( #1976 )
...
* Change 'aquire' to 'acquire'
2018-11-23 11:00:30 +08:00
tigercl
14b8036576
Use username replace id(issue#1737) ( #1961 )
...
* Use username replace id(issue#1737)
* Add test case for issue#1737
* Make with_connection/2 support batch connect
2018-11-21 22:51:33 +08:00
spring2maz
a2c658ba19
Add acking mechamism for shared dispatch ( #1872 )
...
* Add acking mechamism for shared dispatch
For QoS0 messages, no acking
For QoS1/2 messages, 'ACK' at any of events below:
- ACK when QoS is downgraded to 0
- Message is sent to connection process
'NACK' at any of events below:
- Message queue is full and the receiving session starts to drop old messages
- The receiving session crash
Upon 'NACK', messages are dispatched to the 'next' subscriber in the group,
depending on the shared subscription dispatch strategy.
2018-11-21 22:49:45 +08:00
Gilbert
16821490ce
Fix issue#1874 ( #1964 )
...
* Fix issue#1874
Prior to this change, if user use one client connect emqx with mqtt
v3.1.1, the client subscribe the topic and publish message to this
topic, it would receive this message itself published, this commit
provide a configure option to let user ignore the message itself published.
This change fix issue 1874.
* Small Fix
* Fix bug
* Better design
* Fix compile warning and improve coverage
* Better design to solve the performance issue
* Fix typo
* Fix typo
* Delete spaces in end of lines.
* Do not use anonymous function
* Better performance
2018-11-19 13:34:03 +08:00
terry-xiaoyu
82b8047349
Helper funcs for adding proc meta-data
2018-11-19 11:17:58 +08:00
terry-xiaoyu
41315bff0d
Log macros for lazy evaluation
2018-11-19 11:17:58 +08:00
terry-xiaoyu
2269967f1a
Lazy evaluation when logging messages
...
Formatting variables and then passing them into the logger functions leads
to performance issues. i.e.
```erlang
logger:debug("RECV ~s", [emqx_packet:format(Packet)])
```
Above message will only be printed when the current log level set to
`debug`, but the function emqx_packet:format/1 will always be evaluated no
matter what the current log level is.
OTP 21 provides a special meta-data named `report_cb`, which can be used
for lazy evaluation. The fun is only evaluated if the primary/handler log level
check passes, and is therefore recommended if it is expensive to generate
the message.
2018-11-19 11:17:58 +08:00
Andrei Nesterov
9d67a64165
Fix type validation for User-Property
2018-11-19 09:53:43 +08:00
terry-xiaoyu
078584172e
Print EMQ X Version in the console
2018-11-10 12:14:26 +08:00
turtled
faeda253e1
Fix conflicts
2018-11-10 11:44:55 +08:00
terry-xiaoyu
6e26f5e9af
Revert logger print to io:format 2
2018-11-10 11:25:52 +08:00
terry-xiaoyu
2611b6fc2a
Revert logger print to io:format
2018-11-10 11:01:11 +08:00
周子博
c76e2d1413
Fix 'badarg' in io_lib:format/2 when 'from' field is tuple
2018-11-09 18:32:26 +08:00
terry-xiaoyu
997958aed1
Change the start_link API for emqx_client
...
Prior to this change, emqx_client:start_link does 2 works in one call:
- init an erlang process for emqx_client
- send MQTT CONNECT to remote broker
But this solution have some drawbacks:
- the return value of `start_link` compiles the return values of the 2
works: {ok, Pid, MqttResult}. It is inconsistent with the return value
of `gen_statem:start_link`, may causes confusions.
- the return mode of the 2 works are different:
`start_link` should always return {ok, Pid} or {error, Reason}, but
connecting to mqtt may throw out exceptions as it handles the
socket. But the caller couldn't have thought of the exception, he would
pattern match on the result of `emqx_client:start_link`, but it crashed!
- If the init work succeed but the connection failed, the caller couldn't
get a Pid from the return value, but indeed it was created inside the
emqx_client. This hides the fact that the Pid was created, and when the
Pid dies, the caller would receive an message from a Pid it doesn' know about.
This change divived these 2 work into 2 APIs:
- `start_link/1` is to build and verify the options, and returns {ok,Pid}
(on success) or {error, Reason} (on failure).
- `connect/1` is to send MQTT CONNECT, and returns {ok, MQTTResult::properties()} or
{error, MQTTReason}. MQTT reason codes will contains in the `MQTTReason`.
2018-11-09 17:43:04 +08:00
terry-xiaoyu
2dc8ec8b11
Bridge via TLS
2018-11-09 17:43:04 +08:00
tigercl
3879dcdf59
Fix 'badarg' bug with duplicate subscriptions ( #1943 )
2018-11-08 23:02:35 +08:00
Gilbert Wong
32d3826440
Replace macro QOS$i to QOS_$I
...
The two styles of qos macro name in one project is chaotic. It is not
a good practice.
So I change the QOS$i to QOS_$i
2018-11-08 20:42:31 +08:00
turtleDeng
0a337cbcb4
Merge pull request #1905 from emqx/Fix-for-mqtt-sn
...
Fix the init_proc_mng_policy bug
2018-11-05 22:30:51 +08:00
Gilbert Wong
4ea57c2bf9
Delete redundant case clauses in sendfun
...
Prior to this change, there are ok, {binary, _Data}. {datagram, _Peer,
_Dara} case clauses, and the {binary, _Data} and {datagram, _Peer,
_Data} are unnecessary cases
This change delete these two cases and add ok in the end of funtion in
send_fun of emqx_ws_connection.
2018-11-03 22:56:11 +08:00
terry-xiaoyu
92cc171aaf
Support tracing log files for specific topics or clients
2018-11-02 18:38:07 +08:00
terry-xiaoyu
94dbdffd59
New logger formatter with meta-data
2018-11-02 18:38:07 +08:00
spring2maz
ae743ad1f0
Rewrite emqx_mqueue.erl
...
Fixed bugs:
- Priority queue lack of a `len + 1` logic in `in/2`
Changed behaviors:
- Topics not found in priority table (from config) will be treated with default priority,
instead of hasing topic name to a priority number.
- Default priority is now configurable (it was always lower than all configured priorities)
- The dropped message due to reaching `max_len` is now returned from `in/2`,
so the queue owner (`in/2` caller) can perform autopsy on it
2018-10-27 14:21:53 +02:00
tigercl
64cb920b3b
Merge branch 'emqx30' into improve_connect
2018-10-27 14:27:25 +08:00
周子博
3cea06f88f
Remove resume_session/1,
2018-10-27 14:25:10 +08:00
周子博
7c14ba11d6
Set some attributes when session resumed
2018-10-27 13:59:17 +08:00
turtleDeng
8788cb2158
Merge pull request #1921 from emqx/improve_test_cases
...
Improve test cases
2018-10-26 19:45:18 +08:00
周子博
881e1a9621
Add case for ets:match_object
2018-10-26 19:43:05 +08:00
周子博
92251d4a8a
Make more normalize
2018-10-26 17:45:13 +08:00
Gilbert Wong
f7285d5a58
Delete ackprops in pstate
...
Prior to this change, ackprops is duplicated with ack_props
This change delete ackprops.
2018-10-26 17:30:39 +08:00
tigercl
abb2e5c918
Improve test cases, and fix some bugs ( #1920 )
...
* Improve emqx_banned, emqx_pqueue, emqx_router test cases
* Improve emqx_broker test case, and fix bug in emqx_broker
* Add emqx_hooks to CT_SUITES
2018-10-26 17:27:02 +08:00
Gilbert
7544a21e25
Add test cases for emqx_bridge, emqx_mod_rewrite ( #1914 )
2018-10-26 14:04:33 +08:00
周子博
db2e47470a
Fix bugs
2018-10-25 16:19:57 +08:00
周子博
6675e3d496
Implement will message delay publish in session, add test case for clean start and will message in connect packet
2018-10-25 14:26:31 +08:00
Gilbert Wong
a1092a6784
Add eunit cases and fix typo.
2018-10-24 15:59:22 +08:00
周子博
540484e603
Send and cancel will message by apis rather than hook
2018-10-23 17:27:46 +08:00
Gilbert Wong
3f761cbe6a
Support use certifate as username
...
Prior to this change, you can just use CN or EN field from the client
certificate as username.
This change add a new option to allow user to use Certificate directly as
username.
2018-10-23 14:37:05 +08:00
Gilbert
58f5f3c51b
Merge branch 'emqx30' into Fix-for-mqtt-sn
2018-10-23 13:29:45 +08:00
Gilbert Wong
35460d8227
Refactor send_fun
2018-10-22 09:04:03 +08:00
tigercl
55a12c1ab4
Merge branch 'emqx30' into improve_connect
2018-10-19 16:03:17 +08:00
Gilbert
4c40f75f4b
Request & Response (broker and client) ( #1819 )
...
Add request & response support for CONNECT & CONNACK
Prior to this change, there is no validate and specified process for
Request-Response-Information and Response-Information
Also added basic Request/Response functionality to emqx_client implementation
2018-10-18 19:21:05 +02:00
Gilbert Wong
30d986c318
Add warning log for unauthored subscribe
...
Prior to this change, there is no log for unauthored log, it is
difficult to find the problem when subscription error occured.
2018-10-19 01:19:14 +08:00
spring2maz
7e7d99fbad
Change more stats callbacks to full M:F/A
...
Including emqx_sm emqx_cm emqx_router_helper
2018-10-19 00:22:29 +08:00
spring2maz
4082f3ade2
Improve stats test
...
Before this change, the stats callback provided by emqx_broker_helper
was an anonymous function with module local context.
This commit changes it to a full fun M:F/A style callback for:
1. More robust to hot beam reload
2. Faster/smaller variable to construct
3. Easier test
2018-10-19 00:22:29 +08:00
Gilbert Wong
387f2468c0
Add SendFun case for emqx-sn
2018-10-18 15:01:45 +08:00
Gilbert Wong
df713959ab
Refactor init_proc_mng_policy.
...
If there is no zone, it is unnecessary to add proc_mng_policy.
2018-10-18 13:57:27 +08:00
Gilbert Wong
a748e8f1d8
Refactor send_fun in protocol and other connection module
...
Prior to this change, in the send function, the packet is forced to
use emqx:serialize to serialize packet, it is a wrong design because
other plugins which need to transform the mqtt packet to other packets
can not use their own serialize function to serialize packet.
This change solve the problem issued above.
2018-10-18 13:24:06 +08:00
Gilbert Wong
c890792613
Fix the init_proc_mng_policy bug
...
Prior to this change, when the plugin like emqx_sn_gateway which has
no zone run the init_proc_mng_policy function, it would trigger error
and application crash.
This change add a case to avoid crash.
2018-10-17 17:24:05 +08:00
周子博
29beb42aa2
Using client id rather then session pid
2018-10-10 14:00:17 +08:00
tigercl
40251a034c
Merge branch 'improve_connect' into emqx30
2018-10-09 18:03:22 +08:00
Gilbert Wong
d36a34fb59
Fix topic_name validation bug
...
Prior to this change, Prior to this change, the validation for the mqtt5.0 publish packet
which both contains zero-length topic name and topic alias is wrong.
2018-10-09 17:45:40 +08:00
周子博
b80ba6e458
Fix bug when ConnProps is undefined
2018-10-09 14:19:22 +08:00
周子博
9bcd4c3e08
improve will message
2018-10-09 13:35:27 +08:00
Gilbert Wong
52eae65983
Fix topic_name validation bug
...
Prior to this change, Prior to this change, the validation for the mqtt5.0 publish packet
which both contains zero-length topic name and topic alias is wrong.
This change fix this bug.
2018-10-08 20:02:32 +08:00
spring2maz
e3f2ae8db8
Change from customized total heap size check to set process flag
...
The `max_heap_size` process flag can be used to limit total
heap size of a process, and it gives much more detailed
crash log if the limit is hit.
2018-09-29 21:36:34 +08:00
周子博
1705f25db6
Fix bug in session expiry interval
2018-09-29 21:30:22 +08:00
周子博
1638aff0f9
Remove duplicate match
2018-09-29 14:47:21 +08:00
周子博
59798762a9
Remove will message when received disconnect packet with reason code 0x00
2018-09-29 14:47:21 +08:00
周子博
2d354ca883
Improve topic alias maximum in connect packet
2018-09-29 14:47:21 +08:00
周子博
064db65206
improve receive maximum in connect packet
2018-09-29 14:47:21 +08:00
spring2maz
3bab3cbd2a
Shared subscriber should be keyed by SharedName + Topic
...
Prior to this change, if a producer session produces to two
or more shared subscriber groups, the previously picked subscriber
for sticky strategy may not be a valid member for the next group.
2018-09-28 09:37:51 +08:00
HuangDan
96b5d71a67
Fix args errors on emqx_hook:run('message.acked')
2018-09-27 11:49:23 +08:00
spring2maz
8a8729f9ea
Make rebar3 xref work.
...
Fixed a bad call in emqx_mod_subscription module
also commented out dead code for now in emqx_config.erl
2018-09-25 22:09:13 +08:00
HuangDan
5dfd431040
Fix typo
2018-09-22 19:40:07 +08:00
turtleDeng
925e98a3e5
Merge pull request #1823 from emqx/add-shared-sub-strategy
...
Add new shared subscription dispatch strategy
2018-09-22 19:30:08 +08:00
周子博
4336b7c9a0
Fix bug in issue#1848
2018-09-22 18:23:56 +08:00
turtled
5afaac4641
Add emqx_broker:subscribe/3 defult qos
2018-09-22 18:03:05 +08:00
spring2maz
b35d37c92d
Add new shared subscription dispatch strategy
...
'random' was already there before this change
Added two new strategies: 'sticky' and 'round_robin'
'sticky' is made default as it is the cheapest
2018-09-22 10:50:34 +02:00
turtleDeng
8f35d13e17
Improve bridges design ( #1849 )
...
Improve the design of bridges
2018-09-22 16:19:28 +08:00
turtled
475f2a87c6
Rm emqx_ctl set|show cmds
2018-09-22 16:17:21 +08:00
tigercl
03f607c1b2
Fix issue#1833 and #1834 ( #1845 )
2018-09-22 16:10:24 +08:00
turtleDeng
8653732bae
Revert "Calculate the 1.5 keep alive time exactly"
2018-09-22 14:52:31 +08:00
Feng Lee
02ddcf37cd
Merge branch 'emqx30' into more-gc-enforcement-policies
2018-09-22 06:35:11 +08:00
Feng Lee
ee7a7e2479
Fix typo
2018-09-22 06:05:29 +08:00
Feng Lee
33f9e895ad
Merge branch 'emqx30' into more-gc-enforcement-policies
2018-09-22 05:52:41 +08:00
Feng Lee
fbac9ce43e
Improve the foce_gc_policy config.
2018-09-22 05:42:38 +08:00
spring2maz
b61615323b
Move shutdown policy config to zone configs
2018-09-21 18:58:18 +02:00
spring2maz
f70d16e387
Add a test case to cover timeout message flush in emqx_misc
2018-09-21 18:58:18 +02:00
spring2maz
6fca651a84
Add connection/session shutdown policy
...
The hibernation behaviour is also changed (implicitly) in this commit:
Prior to this change, connection/session always hibernates after
the stats timer expires regardless of messages in mailbox.
After this commit, connection/session process only goes to hibernate
when the timer expires AND there is nothing left in the mailbox to
process
2018-09-21 18:58:18 +02:00
spring2maz
721f237bc4
Rewrite emqx_gc.erl
...
The implementation prior to this commit supports
only one gc enforcement policy which is message count threshold.
The new implementation introduces 1 more: volume threshold based
2018-09-21 22:56:34 +08:00
turtleDeng
98758752d4
Merge pull request #1839 from tigercl/emqx30
...
Calculate the 1.5 keep alive time exactly
2018-09-21 20:05:10 +08:00
terry-xiaoyu
389b3c80bc
Fix the message delivery to remote
2018-09-21 20:00:43 +08:00
周子博
ab2697671a
Change the location of the recording last packet timestamp
2018-09-21 19:59:32 +08:00
周子博
aade94711c
Use process dictionaries to record last packet timestamp
2018-09-21 18:50:26 +08:00
周子博
768d1786c7
Fix bug
2018-09-20 15:55:36 +08:00
周子博
073bf481c9
Calculate the 1.5 keep alive time exactly
2018-09-20 15:51:28 +08:00
spring2maz
e940c1c970
Rewrite emqx_gc.erl
...
The implementation prior to this commit supports
only one gc enforcement policy which is message count threshold.
The new implementation introduces 1 more: volume threshold based
2018-09-19 21:08:16 +02:00
HuangDan
3822ff987b
Fix function args
...
Add test cases for emqx_pool module
2018-09-18 09:15:46 +08:00
Feng Lee
ec061f7a21
Merge branch 'emqx30' of github.com:emqx/emqx into emqx30
2018-09-16 20:50:35 +08:00
Feng Lee
69e5869fa0
Add submit/2, async_submit/2 functions for emqx_pool module.
2018-09-16 20:49:47 +08:00
周子博
5eb92e37cc
Remove check for MQTT path, and normalize code
2018-09-14 11:49:17 +08:00
周子博
5465b015be
Add test case for last change
2018-09-14 11:49:17 +08:00
周子博
6f536eaac4
Add customized mqtt path for websocket
2018-09-14 11:49:17 +08:00
周子博
0c6a268539
Set default value of message expiry interval for not mqtt 5.0 message
2018-09-14 11:49:17 +08:00
周子博
88b3460715
Add feature for issue#1809
2018-09-14 11:49:17 +08:00
Gilbert Wong
45b2686e1c
Delete unnecessary code
...
Prior to this change, there are multiple deprecated functions.
2018-09-14 09:45:34 +08:00
HuangDan
fde6a2a4c3
Fixed issue #1811
...
Add tests case for issue #1811
2018-09-13 22:55:15 +08:00
spring2maz
8db9f3e81d
Update & clarify module doc for emqx_mqueue.erl
2018-09-13 09:08:07 +08:00
spring2maz
0c39a7620e
Rebar3 and erlang.mk dual support. ( #1806 )
...
* Rebar3 and erlang.mk dual support.
There was only erlang.mk support prior to this change.
The main reasons for this dual support are:
* Cover report upload can only be done by rebar3 in travis.ci
* We want to prepare for the future to build emqx releases using rebar3
* We do not want to stop supporting erlang.mk in one single step
* Add depencency version consistency check between erlang.mk and rebar.config
2018-09-09 21:51:42 +08:00
周子博
3caa41f751
Add run hook when duplicated subscription
2018-09-08 19:01:03 +08:00
周子博
23c91c0a40
no message
2018-09-08 18:31:44 +08:00
周子博
40977e529a
Retain flag in retained message must set to 1
2018-09-08 18:31:44 +08:00
Gilbert Wong
78020de302
fix pattern match bu
...
Prior to this change, when packet have topic alias, the check_pub_caps
function could not be matched correctly
This change fix this bug.
2018-09-08 12:50:14 +08:00
Gilbert Wong
2d10d6971d
add pattern match for topic alias
...
Prior to this change, it assume that topic_alias exists defaultly
which may cause the unexpected bug
This change fix this bug above
2018-09-08 12:01:22 +08:00
terry-xiaoyu
2121da3755
Ignore Will-Delay-Interval = 0
2018-09-08 10:10:22 +08:00
turtleDeng
0ec461484e
Merge pull request #1790 from emqx/emqx30-feng
...
Improve the Hooks' design
2018-09-07 21:46:30 +08:00
turtleDeng
66e9f9b02a
Merge pull request #1789 from Gilbert-Wong/emqx30
...
Check topic alias
2018-09-07 21:44:20 +08:00
turtleDeng
5ca61dd45c
Merge pull request #1788 from tigercl/emqx30
...
Support retain as published in subscription options
2018-09-07 21:43:56 +08:00
Gilbert
84e43c587d
Merge branch 'emqx30' into emqx30
2018-09-07 18:49:11 +08:00
周子博
6f6e24592b
Fix the reverse match
2018-09-07 18:32:03 +08:00
turtleDeng
ba176f2073
Merge pull request #1797 from terry-xiaoyu/banned_api_v2
...
Update for banned API
2018-09-07 17:50:30 +08:00
周子博
1326e89593
Fix a bug in emqx_protocol.erl
2018-09-07 15:16:32 +08:00
terry-xiaoyu
dd8513ad35
Update for banned API
...
Use `mnesia:foldl` to traverse mnesia rather than `mnesia:first` and
`mnesia:next`, as a badarg exception would occur if the record was
deleted while travering the whole table.
2018-09-07 14:10:16 +08:00
周子博
f8471afb97
Add handling of retain handling subscription option
2018-09-07 13:50:12 +08:00
Feng Lee
304a24ca6a
Code Review: Update the zone module
...
1. Add force_reload/0 management API
2. Change the reload interval to 5 minutes
2018-09-07 10:26:14 +08:00
Feng Lee
d9ad29476a
Code Review: Update the zone module
...
1. Add force_reload/1 API
2. Change the default reload interval to 5 minutes
2018-09-07 10:23:43 +08:00
周子博
d819ec0b58
Comment unused function in emqx_frame.erl
2018-09-07 10:18:21 +08:00
Gilbert Wong
765ab5ad7b
Add condition to handle when mqx_topic_alias do not exist
2018-09-06 19:09:29 +08:00
Feng Lee
328d035dab
Replace 'state' record with map
2018-09-06 18:43:47 +08:00
周子博
f95c82e37a
Add metric for DISCONNECT packet
2018-09-06 18:14:14 +08:00
Feng Lee
edf654727c
Rename emqx_mqtt_properties module to emqx_mqtt_props
2018-09-06 18:09:22 +08:00
Feng Lee
d99d0a22d0
Rename 'ignore' to 'ignored'
2018-09-06 17:54:32 +08:00
周子博
917eb8e29f
Make DISCONNECT packet with reason code 0x00 when this packet doesn't have payload
2018-09-06 17:17:09 +08:00
Feng Lee
2a75105580
Improve the Hooks's design
2018-09-06 16:27:16 +08:00
Gilbert Wong
c145cb89f4
add validate_properties for PUBLISH and fix error for SUB
2018-09-06 15:45:18 +08:00
周子博
42b3c9b4d6
Send DISCONNECT packet with reason code PROTOCOL_ERROR when topic is empty, add checks for topics
2018-09-06 14:47:34 +08:00
Gilbert Wong
9189d4ff41
catch topic_alias_invalid reasoncode
2018-09-06 14:24:07 +08:00
Gilbert Wong
876a983e93
Pub Packet delivered from client to server cannot contain sub id
2018-09-06 13:37:26 +08:00
Feng Lee
5e3aed0b73
Add ok_or_error/1 type
2018-09-06 09:10:47 +08:00
Feng Lee
4635921458
Rewrite the hooks module
2018-09-05 23:21:06 +08:00
Gilbert Wong
c8b92a59b1
check topic alias
2018-09-05 19:06:34 +08:00
周子博
9029ee29d3
Drop will msg when receive the DISCONNECT packet whose reason code is equal to 0x00
2018-09-05 18:03:28 +08:00
周子博
47955f4309
fix bug in retain as published flag
2018-09-05 15:18:26 +08:00
周子博
aa34258f1e
Support Retain As Published in Subscription Options
2018-09-05 14:25:33 +08:00
周子博
f0f818ab1a
Fix bug in emqx_frame
2018-09-05 10:28:49 +08:00
Feng Lee
96122cf966
Rename 'already_existed' to 'already_exists'
2018-09-04 19:14:25 +08:00
周子博
842f4fbf13
Crash when reserved flag in CONNECT packet doesn't equal to 0, and remove repeated check for protocol version
2018-09-04 11:16:15 +08:00
chenyy
abc6081282
fix error spelling word
2018-09-01 11:54:28 +08:00
terry-xiaoyu
ec456dcc73
Fix dialyze issue
2018-08-31 20:48:57 +08:00
terry-xiaoyu
3f42f1271b
bug fix
2018-08-31 18:14:10 +08:00
Feng Lee
880c6ab5fe
Fix typo
2018-08-31 17:27:36 +08:00
Feng Lee
ec7b39f3fd
Merge pull request #1777 from emqtt/emqx30-dialyzer
...
Add banned support, and fix dialyzer errors
2018-08-31 16:58:57 +08:00
Feng Lee
7c45d988f2
Update the spec of deliver/2 function
2018-08-31 16:57:43 +08:00
Feng Lee
ea1ae70833
Fix errors found by dialyzer
2018-08-31 16:46:51 +08:00
Gilbert Wong
e6fd7faa4b
add format_variable for disconnect packet
2018-08-31 16:24:10 +08:00
Feng Lee
3045ec10ab
Add banned feature
2018-08-31 14:04:26 +08:00
Feng Lee
237e65a4e0
Use emqx_mqueue:init/1 to create a mqueue
2018-08-31 10:22:16 +08:00
terry-xiaoyu
23e72feab7
fix reason codes
2018-08-31 01:54:25 +08:00
terry-xiaoyu
9406bc1fd1
fix typo
2018-08-31 01:39:56 +08:00
Feng Lee
aa1334313c
Merge branch 'emqx30' of github.com:emqtt/emqttd into emqx30
2018-08-31 01:22:55 +08:00
Feng Lee
25391e8c71
Rename 'Subscription-Identifiers-Available' to 'Subscription-Identifier-Available'
2018-08-31 01:22:03 +08:00
Gilbert Wong
748826bdee
update access sutie and access control
2018-08-31 01:16:54 +08:00
Feng Lee
dc9a1cd80f
Format emqx_protocol module
2018-08-31 00:48:23 +08:00
Feng Lee
1574d85570
Merge pull request #1775 from emqtt/emqx30-feng
...
Support server_keepalive and CONNACK properties
2018-08-31 00:45:51 +08:00
Feng Lee
07f13db453
Fix conflict
2018-08-31 00:41:48 +08:00
Feng Lee
b6006b5947
Support CONNACK properties
2018-08-31 00:40:10 +08:00
Gilbert Wong
1c94566141
add topic alias validate
2018-08-30 23:49:08 +08:00
Feng Lee
3131acd3bc
Merge branch 'emqx30' into emqx30-feng
2018-08-30 23:41:26 +08:00
Feng Lee
674b55e6e7
Merge pull request #1773 from tigercl/emqx30
...
Add emqx_banned test suite, and fix bugs in emqx_banned
2018-08-30 23:35:15 +08:00
Feng Lee
0379219a04
Improve the design of session discard
2018-08-30 23:14:09 +08:00
周子博
83e11b6e39
Add emqx_banned test suite, and fix bugs in emqx_banned
2018-08-30 22:45:08 +08:00
terry-xiaoyu
fb8a86c5e0
delayed will message
2018-08-30 21:58:02 +08:00
terry-xiaoyu
cf0f55d057
delayed will message
2018-08-30 21:44:00 +08:00
Feng Lee
4a1fdddc31
Merge pull request #1771 from emqtt/emqx30-feng
...
Only store packet_id and timestamp for qos2 message
2018-08-30 21:26:01 +08:00
Feng Lee
78a8ccd0f2
Only store packet_id and timestamp for qos2 message
2018-08-30 21:17:20 +08:00
Feng Lee
dd7f0dec3c
Add 'messages/qos2/expired' counter
2018-08-30 21:01:09 +08:00
Gilbert Wong
2fc41b6935
fix reason code name for mqtt 4
2018-08-30 19:09:22 +08:00
Feng Lee
cae673cf5e
Fix update_expiry/1 function_clause
2018-08-30 18:59:47 +08:00
Feng Lee
826daace61
Align the state record
2018-08-30 18:44:58 +08:00
Feng Lee
c49e5dfddc
Merge branch 'emqx30' into emqx30-feng
2018-08-30 18:42:29 +08:00
Feng Lee
553a60cdec
Update 'Message Expiry Interval' property before delivering a PUBLISH
2018-08-30 18:31:37 +08:00
Feng Lee
7b5f2577d3
Support message ttl and expiration
2018-08-30 18:30:33 +08:00
Feng Lee
1f2bbe3eb8
Support priority queue
2018-08-30 18:29:20 +08:00
Feng Lee
a67958adb4
Add 'messages/expired' counter
2018-08-30 18:28:40 +08:00
Feng Lee
021d43755f
Add update_expiry/1 function
2018-08-30 18:28:02 +08:00
terry-xiaoyu
8a5519cafa
attrs for ws_connection
2018-08-30 14:32:31 +08:00
Gilbert Wong
b0ed953708
fix emqx_session:unsubscribe bug
2018-08-30 13:56:55 +08:00
Feng Lee
2ccec1f719
Merge branch 'emqx30' into emqx30-feng
2018-08-30 11:54:49 +08:00
Feng Lee
2342a7db6d
Rename 'Pid' to 'ConnPid'
2018-08-30 11:48:49 +08:00
Feng Lee
2db64cf53c
Support 'Message-Expiry-Interval property
2018-08-30 11:42:24 +08:00
Feng Lee
2351b41f11
Add is_expired/1, check_expiry/1, check_expiry/2
2018-08-30 11:40:53 +08:00
turtled
d3ed0853ef
Rename bridge module
2018-08-30 10:41:04 +08:00
Feng Lee
da1285ad3c
Merge branch 'emqx30' into emqx30-feng
2018-08-30 09:45:29 +08:00
Feng Lee
53a2f93b7e
Add emqx_connection:attrs/1, emqx_protocol:attrs/1, emqx_session:attrs/1 APIs
2018-08-30 03:03:19 +08:00
Feng Lee
98824a56c2
Remove emqx_flow_control module
2018-08-30 00:28:11 +08:00
Feng Lee
22f8302f98
Merge branch 'emqx30-feng' of github.com:emqtt/emqttd into emqx30-feng
2018-08-30 00:03:59 +08:00
Feng Lee
a282c7625e
Add properties for delivered messages
2018-08-30 00:03:38 +08:00
Feng Lee
8492513094
Merge branch 'emqx30' into emqx30-feng
2018-08-29 23:11:24 +08:00
Feng Lee
567aeb274f
Define types in emqx_types, emqx_mqtt_types modules
2018-08-29 23:08:55 +08:00
turtled
98698d318f
ws disconnect call emqx_protocol:shutdown
2018-08-29 21:39:09 +08:00
turtled
d6f3ae640d
Merge branch 'emqx30' of https://github.com/emqtt/emqttd into emqx30
2018-08-29 20:29:12 +08:00
turtled
1629215b18
Fix hook args bug
2018-08-29 20:29:03 +08:00
周子博
f4330b8af3
Add some test suites and fix bugs
2018-08-29 19:19:22 +08:00
Feng Lee
2dc8f9c4c5
Merge branch 'emqx30-feng' of github.com:emqtt/emqttd into emqx30-feng
2018-08-29 17:55:13 +08:00
Feng Lee
e62d215792
Shutdown and reboot ranch application
2018-08-29 17:52:55 +08:00
Feng Lee
465963fec3
Merge branch 'emqx30' into emqx30-feng
2018-08-29 17:36:38 +08:00
Feng Lee
1a7d60a7e3
Improve the hooks design for emqx 3.0
2018-08-29 17:27:56 +08:00
terry-xiaoyu
c967db409f
EMQX 3.0 UT
2018-08-29 15:50:56 +08:00
turtled
dae81037bf
Update share_sub dispatch
2018-08-29 12:58:55 +08:00
turtled
9711892f73
Fix share_sub disconnect not clear route bug
2018-08-29 10:58:34 +08:00
turtled
af21cdfd1b
Rm tmp var
2018-08-29 10:08:15 +08:00
turtled
00cb26c4e0
Support ws mqtt any version
2018-08-29 10:00:41 +08:00
turtled
013a5a9c7c
Fix emqx_protocol:clientid undefined
2018-08-29 09:30:18 +08:00
Feng Lee
594819b752
Upgrade the publish sequence of QoS1/2 messages
2018-08-29 02:53:22 +08:00
Feng Lee
1cf4532947
Add emqx_mountpoint module
2018-08-28 20:40:31 +08:00
周子博
545e80cd6b
Add some test suites
2018-08-28 17:53:03 +08:00
Feng Lee
8e11845f87
Remove ignore_loop_deliver option
2018-08-28 07:36:22 +08:00
terry-xiaoyu
c92eba4a5e
bug fixes during UT
2018-08-28 00:27:45 +08:00
Gilbert
88d867b256
Merge pull request #1750 from Gilbert-Wong/emqx30
...
update emqx_broker_suite to adapt emqx 3.0 broker
2018-08-27 21:56:00 +08:00
Feng Lee
475319b907
Merge emqx30-feng branch
2018-08-27 21:36:43 +08:00
Feng Lee
1607e576de
Update connection, session, stats modules
2018-08-27 21:34:11 +08:00
Gilbert Wong
ce3f2e4d9e
fix emqx_broker test suite
2018-08-27 21:18:00 +08:00
Gilbert Wong
015901050f
change return tuple of close_session
2018-08-27 18:19:28 +08:00
Gilbert Wong
224aaaf8a7
unsubscribe function should have two params
2018-08-27 17:11:54 +08:00
Gilbert Wong
c5da439313
wrong unsubscribe call
2018-08-27 16:41:58 +08:00
Feng Lee
d167a5c99a
Merge pull request #1748 from emqtt/emqx30-feng
...
Improve the emqx_listeners module
2018-08-27 16:24:59 +08:00
Feng Lee
a19daee353
Improve the print of listener startup
2018-08-27 16:19:58 +08:00
turtled
35d821a62e
Add WS stats
2018-08-27 16:15:23 +08:00
Feng Lee
42288ac412
The ACL file should not be undefined
2018-08-27 15:57:13 +08:00
Feng Lee
dca292f538
Replace 'Client' with 'Credentials' map
2018-08-27 15:54:41 +08:00
Gilbert
a183693ac8
Merge pull request #1747 from Gilbert-Wong/emqx30
...
fix subscribe bugs and update emqx_mock_client
2018-08-27 15:36:13 +08:00
Gilbert Wong
087bfe80c8
fix unsubscribe emqx_mock_client error
2018-08-27 15:24:40 +08:00
turtled
91eb79967c
Add syslog
2018-08-27 13:50:38 +08:00
Gilbert Wong
28e22825ba
fix emqx subscriptions error
2018-08-27 12:35:36 +08:00
Gilbert Wong
f0f1456168
fix duplicated subscribers with same topic
2018-08-27 11:21:16 +08:00
Feng Lee
6d2b31911a
Merge pull request #1746 from emqtt/emqx30-feng
...
Use map to replace #state{} record
2018-08-27 10:35:43 +08:00
turtled
6478f811bf
Fix conflicts
2018-08-27 10:29:22 +08:00
Feng Lee
6e8635394e
Use map to replace #state{} record
2018-08-27 10:25:15 +08:00
turtled
95d36d0204
Fix share sub bug
2018-08-27 10:15:41 +08:00
turtled
1448515e64
Fix websocket bug
2018-08-27 10:14:58 +08:00
Feng Lee
5f65335835
Merge branch 'emqx30' into emqx_30_acl_cache_v2
2018-08-27 09:42:42 +08:00
Feng Lee
3f811aa9ca
Add credentials/1 function
2018-08-27 09:28:49 +08:00
Gilbert Wong
a369fb6960
fix subscribe bug
2018-08-26 22:02:39 +08:00
terry-xiaoyu
9d29dd0e10
use config enable_acl_cache
2018-08-26 18:25:17 +08:00
Feng Lee
397179bbda
Merge branch 'emqx30' of github.com:emqtt/emqttd into emqx30
2018-08-26 16:25:02 +08:00
Feng Lee
0e3728c940
Add emqx_types module and 'credentials' type
2018-08-26 16:24:51 +08:00
terry-xiaoyu
9717f9b83e
add module emqx_acl_cache
2018-08-26 15:46:22 +08:00
terry-xiaoyu
8cd20744be
improve cache datastruct using keys-queue
2018-08-26 13:33:00 +08:00
terry-xiaoyu
a904031979
acl cache using proc_dict
2018-08-26 13:30:18 +08:00
terry-xiaoyu
737fe19331
update acl test cases
2018-08-26 12:48:32 +08:00
Gilbert Wong
ee11627828
delete duplicated subscribe function
2018-08-25 18:36:17 +08:00
Gilbert Wong
8b4be236e5
fix list_to_subid error
2018-08-25 17:10:51 +08:00
Feng Lee
36129073e8
Merge branch 'emqx30-dev' of github.com:emqtt/emqttd into emqx30-dev
2018-08-25 16:08:27 +08:00
Feng Lee
b7c2821326
Make reason codes of SUBACK be compatible with MQTT V3.1.1
2018-08-25 16:07:57 +08:00
Feng Lee
c2c1320083
Update compat/2 for suback reason codes
2018-08-25 16:05:58 +08:00
Feng Lee
612c88e71e
Add 'rc' and 'subid' fields
2018-08-25 16:04:21 +08:00
Feng Lee
1aee05ce16
Fix unsubscribe bug
2018-08-25 16:03:28 +08:00
turtled
892483891a
Merge branch 'emqx30-dev' of https://github.com/emqtt/emqttd into emqx30-dev
2018-08-25 14:32:48 +08:00
turtled
fc0f57073d
Fix share sub dispatch fail
2018-08-25 14:32:32 +08:00
Feng Lee
5f42f88401
Pass paho zero_length_clientid test case
2018-08-25 11:51:36 +08:00
Feng Lee
68cfcf6e0e
Pass paho mqtt interoperability tests
2018-08-24 23:19:11 +08:00
Feng Lee
694485252a
Merge branch 'emqx30-dev' of github.com:emqtt/emqttd into emqx30-dev
2018-08-24 18:43:36 +08:00
Feng Lee
0f052ce352
Upgrade connection, protocol and session modules for MQTT 5.0
2018-08-24 18:39:59 +08:00
turtled
36647b641f
Fix select emqx_shared_subscription fail
2018-08-24 11:38:54 +08:00
Petr Gotthard
d4176461ff
Send client_pid to distinguish multiple clients
...
When a controlling process starts multiple clients that make multiple
subscriptions it may be desirable to identify from which client a
message is comming from. The topic id may not be sufficient.
2018-08-20 11:58:19 +02:00
turtled
22e8b07a3d
Receive/send messages by bridge
2018-08-19 20:31:44 +08:00
Feng Lee
c9d604ed02
Fix the badmatch error of packet_to_msg/1
2018-08-13 16:49:53 +08:00
Feng Lee
9145fb9ec8
Use os:timestamp/1 to get now millseconds
2018-08-12 19:14:14 +08:00
Feng Lee
f80cd2d986
Improve the MQTT over Websocket connection
2018-08-11 17:57:19 +08:00
Gilbert Wong
3d05954d5b
Optimize emqx_time module
2018-08-11 16:17:39 +08:00
turtled
d516b8c241
mochiweb -> cowboy
2018-08-09 15:19:45 +08:00
Feng Lee
919eb9fa1e
Use cowboy to replace minirest
2018-08-09 14:27:49 +08:00
Feng Lee
e23a6e87d8
Merge listeners, zones, bridges config
2018-08-08 19:37:57 +08:00
Feng Lee
4005d58166
Move the 'rate_limit' option from zone to listener
2018-08-08 19:31:25 +08:00
turtled
b5a1960b63
Stop emqx_ws
2018-08-08 18:42:11 +08:00
turtled
4d9e03a803
Refactor websocket conn using cowboy
2018-08-08 18:36:14 +08:00
Feng Lee
8418be0a5b
Use the new emqx_session:unsubscribe/2 API
2018-08-07 11:00:04 +08:00
Gilbert Wong
96d251ec3c
Add encode and decode options and test suites
2018-08-07 10:27:04 +08:00
Gilbert Wong
79481db659
Enhance base62 encode/decode Funs
2018-08-06 23:45:27 +08:00
Feng Lee
645c971a07
Fix QoS tuning
2018-08-06 17:09:14 +08:00
Feng Lee
7d0cba9427
Add MQTT 5.0 supports for connection, protocol and session modules
2018-08-06 16:33:10 +08:00
Feng Lee
83dee0e340
Rename emqx_alarm to emqx_alarm_mgr
2018-07-19 10:53:41 +08:00
Feng Lee
eeeed35e2a
Remove the alarm_fun arg from emqx_mqueue:new/3
2018-07-19 10:46:05 +08:00
Feng Lee
4297033415
Fix undefined emqx_vm:schedulers/1
2018-07-19 10:19:25 +08:00
Feng Lee
7ee54aac28
Add 'qos' field to message record
2018-07-18 23:41:00 +08:00
Feng Lee
6c58bbab2b
Remove emqx_lager_backend module
2018-07-18 23:29:38 +08:00
Feng Lee
ca4cdfe4ee
Move the passwd_hash/2 function to emqx-passwd project
2018-07-18 23:29:20 +08:00
Feng Lee
62aa072f2f
Upgrade for MQTT Version 5.0 and Erlang/OTP R21
2018-07-18 13:43:17 +08:00
chenyy
6f405dc128
remove ?MODULE because we don’t need it
2018-06-29 15:10:12 +08:00
Feng Lee
385c7cd3e6
Remove 'tuple call' and be compatible with Erlang/OTP R21
2018-06-29 12:26:30 +08:00
Feng Lee
1de94b6858
Register the default ACL module in emqx_access_control
2018-06-21 22:40:30 +08:00
Feng Lee
b733a3bcfb
Throw mqtt_frame_too_large exception if the sent frame is too large
2018-06-12 12:10:53 +08:00
Feng Lee
5d45d40db5
Rename emqx_mqtt module to emqx_listeners
2018-06-12 10:04:01 +08:00
Feng Lee
055de617fc
Add emqx_message:make/4 and fix whitespace
2018-05-31 21:57:17 +08:00
Feng Lee
bffdd2ba74
Upgrade esockd and add more test cases
2018-05-22 13:01:19 +08:00
Feng Lee
bf253ab9b3
Support batch delete
2018-05-10 22:03:59 +08:00
Feng Lee
c11e8f453b
Add test cases for MQTT 5.0 frame
2018-05-09 00:42:41 +08:00
Feng Lee
31bc091873
Implement MQTT Version 5.0 client
2018-05-06 17:45:18 +08:00
Feng Lee
1fe28a7aef
Update merge_opts/2 function
2018-04-30 12:36:17 +08:00
Feng Lee
1630f7c9b8
Add validate/1 function
2018-04-30 12:33:29 +08:00
Feng Lee
dc7804a2dc
Support MQTT Version 5.0 Client
2018-04-30 12:27:39 +08:00
Feng Lee
16426346bb
Fix whitespace
2018-04-24 17:31:31 +08:00
Feng Lee
2a4ffc6645
Add more service modules for MQTT Version 5.0
2018-04-18 16:34:23 +08:00
Feng Lee
bbb66ff92e
Refactor the broker, router modules
2018-04-10 18:17:07 +08:00
Feng Lee
bcdcb30af5
Merge branch 'emqx30' of github.com:emqtt/emqttd into emqx30
2018-04-09 14:32:58 +08:00
Feng Lee
a902f508b5
Use emqx_config:get_env/1 to read env
2018-04-09 14:32:49 +08:00
Feng Lee
c194e82807
Export dispatch/2, dispatch/3 for RPC
2018-04-09 14:31:34 +08:00
Feng Lee
71acf91ace
Replace lager with emqx_log
2018-04-09 12:34:53 +08:00
Feng Lee
5f32f3c560
Pass the paho interoperability tests
2018-04-08 16:37:30 +08:00
Feng Lee
bfb23ff0b2
Improve the design of MQTT session management
2018-04-08 15:16:05 +08:00
Feng Lee
39548cc399
Improve the session management
2018-04-04 15:28:01 +08:00
Feng Lee
6459481024
Add multicall/4 function
2018-04-03 20:22:01 +08:00
Feng Lee
2eed46310c
Misc fix for the MQTT Version 5.0
2018-03-30 17:18:08 +08:00
Feng Lee
9976327c8d
Add emqx_mqtt module
2018-03-23 18:13:09 +08:00
Feng Lee
f007f69abe
Update emqx.app.src
2018-03-23 16:45:50 +08:00
Feng Lee
56b88dd7f7
Improve the design of session management
2018-03-23 16:39:23 +08:00
Feng Lee
282e341433
EMQ X R3.0 - Improve the design of pubsub and router
2018-03-21 16:48:52 +08:00
Feng Lee
f218c6a35d
Add a locker module
2018-03-10 13:28:14 +08:00
Feng Lee
22350f9117
Depends on canel-lock library
2018-03-09 13:26:46 +08:00
Feng Lee
6a957e1b33
Support MQTT Version 5.0
2018-03-02 20:18:27 +08:00
Feng Lee
d7eae533ac
Merge the emqx-mqtt5 library
2018-02-28 21:22:39 +08:00
Feng Lee
f7f0f27e4d
Parse and serialize MQTT 5.0 protocol packets
2018-02-27 23:45:55 +08:00
Feng Lee
a8aeb5ac17
Rename the 'mqtt_route' record to 'route'
2018-02-27 09:13:14 +08:00
Feng Lee
f4fd6efe16
Merge the emqx-common, emqx-router libraries
2018-02-26 23:29:53 +08:00
Feng Lee
d5893ba2be
Replace gen_server2 with gen_server for we cannot trace the size of drain queue
2018-02-26 13:24:29 +08:00
Feng Lee
fcb2ec8427
Merge the latest enterprise branch
2018-02-24 15:56:32 +08:00
Feng Lee
b63c34ab14
Merge the latest master branch
2018-02-24 11:27:09 +08:00
Feng Lee
a22e225e67
Merge pull request #1475 from HJianBo/develop
...
Fix #1473 for supporting special chars in URL path
2018-01-28 15:32:56 +08:00
Feng Lee
707d338b0e
Merge branch 'develop' into ws-proxy
2018-01-28 15:11:08 +08:00
HeeeJianBo
3146cdda92
Fix #1473 for supporting special chars in URL path
2018-01-28 14:25:41 +08:00
Feng Lee
0f717e5b3b
Merge branch 'develop' of github.com:emqtt/emqttd into develop
2018-01-23 11:10:27 +08:00
Feng Lee
701c632e07
Fix issue #1461 - keep the retain flag for new subscription
2018-01-23 11:09:42 +08:00
Feng Lee
a3e97f798b
Update Copyright to 2018
2018-01-16 08:57:46 +08:00
Feng Lee
56195670c6
Misc fix
2018-01-12 10:45:36 +08:00
Feng Lee
bfa9fc675c
Merge pull request #1420 from HJianBo/issue_1216
...
Fix issue #1216
2018-01-07 14:02:54 +08:00
Feng Lee
fdc55de509
Change the type of 'mqtt.bridge.ping_down_interval' to ms duration
2018-01-04 16:09:45 +08:00
Feng Lee
86fc80b983
Change the type of 'mqtt.broker.sys_interval' to ms duration
2018-01-04 16:09:10 +08:00