aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README1
-rw-r--r--src/ejabberd_odbc.erl9
-rw-r--r--src/ejabberd_odbc_sup.erl6
-rw-r--r--src/mod_register_web.erl13
4 files changed, 17 insertions, 12 deletions
diff --git a/README b/README
index d6b95bcda..c0946ee75 100644
--- a/README
+++ b/README
@@ -18,7 +18,6 @@ To compile ejabberd you need:
- GNU Iconv 1.8 or higher, for the IRC Transport
(mod_irc). Optional. Not needed on systems with GNU Libc.
- ImageMagick's Convert program. Optional. For CAPTCHA challenges.
- - exmpp 0.9.6 or higher. Optional. For import/export XEP-0227 files.
1. Compile and install on *nix systems
diff --git a/src/ejabberd_odbc.erl b/src/ejabberd_odbc.erl
index 6a7d9de6d..802e32ae2 100644
--- a/src/ejabberd_odbc.erl
+++ b/src/ejabberd_odbc.erl
@@ -140,9 +140,12 @@ sql_bloc(Host, F) -> sql_call(Host, {sql_bloc, F}).
sql_call(Host, Msg) ->
case get(?STATE_KEY) of
undefined ->
- (?GEN_FSM):sync_send_event(ejabberd_odbc_sup:get_random_pid(Host),
- {sql_cmd, Msg, now()},
- ?TRANSACTION_TIMEOUT);
+ case ejabberd_odbc_sup:get_random_pid(Host) of
+ none -> ?WARNING_MSG("SQL calling unknown host: ~p~n", [Host]);
+ Pid ->
+ (?GEN_FSM):sync_send_event(Pid,{sql_cmd, Msg, now()},
+ ?TRANSACTION_TIMEOUT)
+ end;
_State -> nested_op(Msg)
end.
diff --git a/src/ejabberd_odbc_sup.erl b/src/ejabberd_odbc_sup.erl
index bfad5428e..d05fd139e 100644
--- a/src/ejabberd_odbc_sup.erl
+++ b/src/ejabberd_odbc_sup.erl
@@ -82,8 +82,10 @@ get_pids(Host) ->
[R#sql_pool.pid || R <- Rs].
get_random_pid(Host) ->
- Pids = get_pids(Host),
- lists:nth(erlang:phash(now(), length(Pids)), Pids).
+ case get_pids(Host) of
+ [] -> none;
+ Pids -> lists:nth(erlang:phash(now(), length(Pids)), Pids)
+ end.
add_pid(Host, Pid) ->
F = fun () ->
diff --git a/src/mod_register_web.erl b/src/mod_register_web.erl
index 0da53b26d..e98478349 100644
--- a/src/mod_register_web.erl
+++ b/src/mod_register_web.erl
@@ -487,12 +487,13 @@ register_account(Username, Host, Password) ->
Access = gen_mod:get_module_opt(Host, mod_register, access,
fun(A) when is_atom(A) -> A end,
all),
- JID = jlib:make_jid(Username, Host, <<"">>),
- Match = acl:match_rule(Host, Access, JID),
- case {JID, Match} of
- {error, _} -> {error, invalid_jid};
- {_, deny} -> {error, not_allowed};
- {_, allow} -> register_account2(Username, Host, Password)
+ case jlib:make_jid(Username, Host, <<"">>) of
+ error -> {error, invalid_jid};
+ JID ->
+ case acl:match_rule(Host, Access, JID) of
+ deny -> {error, not_allowed};
+ allow -> register_account2(Username, Host, Password)
+ end
end.
register_account2(Username, Host, Password) ->