diff options
author | Holger Weiss <holger@zedat.fu-berlin.de> | 2014-12-24 00:35:22 +0100 |
---|---|---|
committer | Holger Weiss <holger@zedat.fu-berlin.de> | 2014-12-24 00:35:22 +0100 |
commit | 9dc9d75502da19a4282fa32fbc7850b2ea061780 (patch) | |
tree | cd778a12a3a5d65a9a01e6026ff670b9210608b8 /src/ejabberd_captcha.erl | |
parent | Fix upgrade of PubSub mnesia tables from older ejabberd version. (diff) |
Fix ejabberd_captcha's listener parsing
If the "captcha_host" is specified without "http://" or "https://"
prefix, ejabberd_captcha tries to figure out the protocol automatically.
Fix the code that parses the listener configuration in order to do that.
Diffstat (limited to 'src/ejabberd_captcha.erl')
-rw-r--r-- | src/ejabberd_captcha.erl | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/ejabberd_captcha.erl b/src/ejabberd_captcha.erl index ab91ccb04..d433cc24b 100644 --- a/src/ejabberd_captcha.erl +++ b/src/ejabberd_captcha.erl @@ -549,10 +549,11 @@ get_transfer_protocol(PortString) -> get_port_listeners(PortNumber) -> AllListeners = ejabberd_config:get_option(listen, fun(V) -> V end), - lists:filter(fun ({{Port, _Ip, _Netp}, _Module1, - _Opts1}) - when Port == PortNumber -> - true; + lists:filter(fun (Listener) when is_list(Listener) -> + case proplists:get_value(port, Listener) of + PortNumber -> true; + _ -> false + end; (_) -> false end, AllListeners). @@ -562,12 +563,11 @@ get_captcha_transfer_protocol([]) -> "is not a ejabberd_http listener with " "'captcha' option. Change the port number " "or specify http:// in that option.">>); -get_captcha_transfer_protocol([{{_Port, _Ip, tcp}, - ejabberd_http, Opts} - | Listeners]) -> - case lists:member(captcha, Opts) of +get_captcha_transfer_protocol([Listener | Listeners]) when is_list(Listener) -> + case proplists:get_value(module, Listener) == ejabberd_http andalso + proplists:get_bool(captcha, Listener) of true -> - case lists:member(tls, Opts) of + case proplists:get_bool(tls, Listener) of true -> https; false -> http end; |