From e31a20ed80d95c8ca7feb47b30deb9f8953497db Mon Sep 17 00:00:00 2001 From: gspasov Date: Thu, 25 Jul 2019 11:03:26 +0300 Subject: [PATCH 1/2] NY-7893 Fix infinity loop --- apps/roster/src/protocol/micro_auth.erl | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/roster/src/protocol/micro_auth.erl b/apps/roster/src/protocol/micro_auth.erl index 27913776a..5026a85c0 100644 --- a/apps/roster/src/protocol/micro_auth.erl +++ b/apps/roster/src/protocol/micro_auth.erl @@ -24,11 +24,14 @@ check(#mqtt_client{client_id = <<"emqttd_", _/binary>> = ClientId, username = <<"micro">>, ws_initial_headers = [_|_] = Headers} = MC, _Pwd, State) -> roster:info(?MODULE, "~p:Auth:auth(micro)/check/ws headers: ~p", [ClientId, Headers]), - check(MC, list_to_binary(proplists:get_value("x-json-web-token", normalize(Headers), ?EMPTY_TOKEN)), State); + check(MC, {token, list_to_binary(proplists:get_value("x-json-web-token", normalize(Headers), ?EMPTY_TOKEN))}, State); +check(#mqtt_client{client_id = <<"emqttd_", _/binary>> = ClientId, + username = <<"micro">>} = MC, Pwd, State) when not is_tuple(Pwd) -> +check(MC, {token, Pwd}, State); check(#mqtt_client{client_id = <<"emqttd_", _/binary>> = ClientId, username = <<"micro">>, client_pid = ClientPid, - will_topic = WT}, Token, _State) -> + will_topic = WT}, {token, Token}, _State) -> roster:info(?MODULE, "~p:Auth:auth(micro)/check", [ClientId]), case WT of <<"version/", BVer/binary>> -> -- GitLab From cce5ddbb5ccb6c6f26599604ca152d25cb20c70d Mon Sep 17 00:00:00 2001 From: gspasov Date: Thu, 25 Jul 2019 12:03:10 +0300 Subject: [PATCH 2/2] NY-7893 Fix infinity loop 2 --- apps/roster/src/protocol/micro_auth.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/roster/src/protocol/micro_auth.erl b/apps/roster/src/protocol/micro_auth.erl index 5026a85c0..766a3b56c 100644 --- a/apps/roster/src/protocol/micro_auth.erl +++ b/apps/roster/src/protocol/micro_auth.erl @@ -22,7 +22,7 @@ check(#mqtt_client{client_id = <<"sys_micro_", _/binary>> = ClientId, client_pid ignore; check(#mqtt_client{client_id = <<"emqttd_", _/binary>> = ClientId, username = <<"micro">>, - ws_initial_headers = [_|_] = Headers} = MC, _Pwd, State) -> + ws_initial_headers = [_|_] = Headers} = MC, Pwd, State) when not is_tuple(Pwd) -> roster:info(?MODULE, "~p:Auth:auth(micro)/check/ws headers: ~p", [ClientId, Headers]), check(MC, {token, list_to_binary(proplists:get_value("x-json-web-token", normalize(Headers), ?EMPTY_TOKEN))}, State); check(#mqtt_client{client_id = <<"emqttd_", _/binary>> = ClientId, -- GitLab