diff --git a/src/ejabberd_s2s.erl b/src/ejabberd_s2s.erl index d972f5866..4b74b8c4a 100644 --- a/src/ejabberd_s2s.erl +++ b/src/ejabberd_s2s.erl @@ -480,9 +480,13 @@ new_connection(MyServer, Server, From, FromTo, end, TRes = mnesia:transaction(F), case TRes of - {atomic, Pid} -> - ejabberd_s2s_out:connect(Pid), - [Pid]; + {atomic, Pid1} -> + if Pid1 == Pid -> + ejabberd_s2s_out:connect(Pid); + true -> + ejabberd_s2s_out:stop(Pid) + end, + [Pid1]; {aborted, Reason} -> ?ERROR_MSG("failed to register connection ~s -> ~s: ~p", [MyServer, Server, Reason]),