aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_captcha.erl
diff options
context:
space:
mode:
authorHolger Weiss <holger@zedat.fu-berlin.de>2014-12-24 00:35:22 +0100
committerHolger Weiss <holger@zedat.fu-berlin.de>2014-12-24 00:35:22 +0100
commit9dc9d75502da19a4282fa32fbc7850b2ea061780 (patch)
treecd778a12a3a5d65a9a01e6026ff670b9210608b8 /src/ejabberd_captcha.erl
parentFix 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.erl18
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;