From 177ae6a71b751c55b93dac06b4f5d1f9dec31cb4 Mon Sep 17 00:00:00 2001 From: Ali Farhadi Date: Sat, 3 Sep 2016 11:56:28 +0430 Subject: [PATCH 1/3] Fix unmatching args in mod_rewrite unsubscribe hook --- src/emqttd_mod_rewrite.erl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/emqttd_mod_rewrite.erl b/src/emqttd_mod_rewrite.erl index edd6ac41a..653fb49c7 100644 --- a/src/emqttd_mod_rewrite.erl +++ b/src/emqttd_mod_rewrite.erl @@ -44,9 +44,9 @@ rewrite_subscribe({_ClientId, _Username}, {Topic, Opts}, Sections) -> lager:info("Rewrite subscribe: ~p", [{Topic, Opts}]), {ok, {match_topic(Topic, Sections), Opts}}. -rewrite_unsubscribe({_ClientId, _Username}, {Topic, Opts}, Sections) -> - lager:info("Rewrite unsubscribe: ~p", [{Topic, Opts}]), - {ok, {match_topic(Topic, Sections), Opts}}. +rewrite_unsubscribe({_ClientId, _Username}, Topic, Sections) -> + lager:info("Rewrite unsubscribe: ~p", [Topic]), + {ok, match_topic(Topic, Sections)}. rewrite_publish(Message=#mqtt_message{topic = Topic}, Sections) -> %%TODO: this will not work if the client is always online. From 7a295f614f0a8bc6ac4dae45d1cd27515c371a5d Mon Sep 17 00:00:00 2001 From: Ali Farhadi Date: Sat, 3 Sep 2016 11:56:42 +0430 Subject: [PATCH 2/3] Send ClientId, Username as a Tuple in unsubscribe hook --- src/emqttd_session.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/emqttd_session.erl b/src/emqttd_session.erl index bf475e4f6..be2ac3611 100644 --- a/src/emqttd_session.erl +++ b/src/emqttd_session.erl @@ -336,7 +336,7 @@ handle_cast({unsubscribe, Topics}, Session = #session{client_id = ClientId, Subscriptions1 = lists:foldl(fun(RawTopic, SubDict) -> {Topic0, _Opts} = emqttd_topic:strip(RawTopic), - case emqttd:run_hooks('client.unsubscribe', [ClientId, Username], Topic0) of + case emqttd:run_hooks('client.unsubscribe', [{ClientId, Username}], Topic0) of {ok, Topic1} -> case dict:find(Topic1, SubDict) of {ok, _Qos} -> From 49258f4a0cd18b7eb028d8e8beec4fc0adbd9449 Mon Sep 17 00:00:00 2001 From: Ali Farhadi Date: Wed, 7 Sep 2016 15:07:06 +0430 Subject: [PATCH 3/3] Fixing issues in cluster mode. --- src/emqttd_pubsub.erl | 2 +- src/emqttd_router.erl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emqttd_pubsub.erl b/src/emqttd_pubsub.erl index 1af6274bf..487181a0e 100644 --- a/src/emqttd_pubsub.erl +++ b/src/emqttd_pubsub.erl @@ -26,7 +26,7 @@ -export([start_link/3, subscribe/2, unsubscribe/2, publish/2, async_subscribe/2, async_unsubscribe/2]). --export([subscribers/1]). +-export([subscribers/1, dispatch/2]). %% gen_server. -export([init/1, handle_call/3, handle_cast/2, handle_info/2, diff --git a/src/emqttd_router.erl b/src/emqttd_router.erl index a58e599e0..bcbbb42e8 100644 --- a/src/emqttd_router.erl +++ b/src/emqttd_router.erl @@ -64,7 +64,7 @@ mnesia(boot) -> {attributes, record_info(fields, mqtt_route)}]); mnesia(copy) -> - ok = emqttd_mnesia:copy_table(topic), + ok = emqttd_mnesia:copy_table(mqtt_topic), ok = emqttd_mnesia:copy_table(mqtt_route, ram_copies). %%--------------------------------------------------------------------