aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ejabberd_odbc.erl9
-rw-r--r--src/ejabberd_odbc_sup.erl6
-rw-r--r--src/ejabberd_s2s_in.erl12
-rw-r--r--src/mod_pubsub_odbc.erl11
4 files changed, 20 insertions, 18 deletions
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/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
index 3eb0b71cc..a3e772dfc 100644
--- a/src/ejabberd_s2s_in.erl
+++ b/src/ejabberd_s2s_in.erl
@@ -294,15 +294,9 @@ wait_for_stream({xmlstreamstart, _Name, Attrs},
?INFO_MSG("Closing s2s connection: ~s <--> ~s (~s)",
[StateData#state.server, RemoteServer, CertError]),
send_text(StateData,
- xml:element_to_binary(?SERRT_POLICY_VIOLATION(<<"en">>,
- CertError))),
- {atomic, Pid} =
- ejabberd_s2s:find_connection(jlib:make_jid(<<"">>,
- Server, <<"">>),
- jlib:make_jid(<<"">>,
- RemoteServer,
- <<"">>)),
- ejabberd_s2s_out:stop_connection(Pid),
+ <<(xml:element_to_binary(?SERRT_POLICY_VIOLATION(<<"en">>,
+ CertError)))/binary,
+ (?STREAM_TRAILER)/binary>>),
{stop, normal, StateData};
{VerifyResult, RemoteServer, Msg} ->
{SASL, NewStateData} = case VerifyResult of
diff --git a/src/mod_pubsub_odbc.erl b/src/mod_pubsub_odbc.erl
index 3d26ad0fa..00e619213 100644
--- a/src/mod_pubsub_odbc.erl
+++ b/src/mod_pubsub_odbc.erl
@@ -885,10 +885,10 @@ unsubscribe_user(Entity, Owner) ->
Host = host(element(2, BJID)),
spawn(fun () ->
lists:foreach(fun (PType) ->
- {result, Subscriptions} =
- node_action(Host, PType,
+ case node_action(Host, PType,
get_entity_subscriptions,
- [Host, Entity]),
+ [Host, Entity]) of
+ {result, Subscriptions} ->
lists:foreach(fun ({#pubsub_node{options
=
Options,
@@ -922,7 +922,10 @@ unsubscribe_user(Entity, Owner) ->
end;
(_) -> ok
end,
- Subscriptions)
+ Subscriptions);
+ Error ->
+ ?DEBUG("Error at node_action: ~p", [Error])
+ end
end,
plugins(Host))
end).