diff options
-rw-r--r-- | src/ejabberd_odbc.erl | 9 | ||||
-rw-r--r-- | src/ejabberd_odbc_sup.erl | 6 | ||||
-rw-r--r-- | src/ejabberd_s2s_in.erl | 12 | ||||
-rw-r--r-- | src/mod_pubsub_odbc.erl | 11 |
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). |