From 301b1b7a7a194cb0b0d44832a7399ae8415f73e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= Date: Mon, 13 Mar 2017 16:41:52 +0100 Subject: [PATCH] Fix handling of xmlrpc request without authentication structure This is problem from issue #1602 --- src/ejabberd_xmlrpc.erl | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ejabberd_xmlrpc.erl b/src/ejabberd_xmlrpc.erl index ac2954b30..17fe75621 100644 --- a/src/ejabberd_xmlrpc.erl +++ b/src/ejabberd_xmlrpc.erl @@ -274,7 +274,7 @@ extract_auth(AuthList) -> {error, not_found} end catch - exit:{attribute_not_found, _Attr, _} -> + exit:{attribute_not_found, _, _} -> try get_attrs([user, server, password], AuthList) of [U0, S0, P] -> U = jid:nodeprep(U0), @@ -286,8 +286,8 @@ extract_auth(AuthList) -> {error, invalid_auth} end catch - exit:{attribute_not_found, _Attr, _} -> - #{} + exit:{attribute_not_found, Attr, _} -> + throw({error, missing_auth_arguments, Attr}) end end. @@ -340,7 +340,8 @@ handler(#state{get_auth = true, auth = noauth, ip = IP} = State, {call, Method, Arguments}) catch {error, missing_auth_arguments, _Attr} -> - handler(State#state{get_auth = false, auth = noauth}, + handler(State#state{get_auth = false, + auth = #{ip => IP, caller_module => ?MODULE}}, {call, Method, AllArgs}) end; %% .............................