aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ejabberd_c2s.erl5
-rw-r--r--src/ejabberd_s2s_in.erl5
-rw-r--r--src/ejabberd_s2s_out.erl11
-rw-r--r--src/ejabberd_socket.erl2
4 files changed, 16 insertions, 7 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 8f374a440..7cbc16f9d 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -67,7 +67,10 @@
start(SockData, Opts) ->
case proplists:get_value(supervisor, Opts, true) of
true ->
- supervisor:start_child(ejabberd_c2s_sup, [SockData, Opts]);
+ case supervisor:start_child(ejabberd_c2s_sup, [SockData, Opts]) of
+ {ok, undefined} -> ignore;
+ Res -> Res
+ end;
_ ->
xmpp_stream_in:start(?MODULE, [SockData, Opts],
ejabberd_config:fsm_limit_opts(Opts))
diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
index 76a844f87..48a650a4e 100644
--- a/src/ejabberd_s2s_in.erl
+++ b/src/ejabberd_s2s_in.erl
@@ -57,7 +57,10 @@
start(SockData, Opts) ->
case proplists:get_value(supervisor, Opts, true) of
true ->
- supervisor:start_child(ejabberd_s2s_in_sup, [SockData, Opts]);
+ case supervisor:start_child(ejabberd_s2s_in_sup, [SockData, Opts]) of
+ {ok, undefined} -> ignore;
+ Res -> Res
+ end;
_ ->
xmpp_stream_in:start(?MODULE, [SockData, Opts],
ejabberd_config:fsm_limit_opts(Opts))
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index bcacd8e77..e8cad9792 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -54,10 +54,13 @@
%%%===================================================================
start(From, To, Opts) ->
case proplists:get_value(supervisor, Opts, true) of
- true ->
- supervisor:start_child(ejabberd_s2s_out_sup,
- [From, To, Opts]);
- _ ->
+ true ->
+ case supervisor:start_child(ejabberd_s2s_out_sup,
+ [From, To, Opts]) of
+ {ok, undefined} -> ignore;
+ Res -> Res
+ end;
+ _ ->
xmpp_stream_out:start(?MODULE, [ejabberd_socket, From, To, Opts],
ejabberd_config:fsm_limit_opts([]))
end.
diff --git a/src/ejabberd_socket.erl b/src/ejabberd_socket.erl
index e1712be2f..9953a76ae 100644
--- a/src/ejabberd_socket.erl
+++ b/src/ejabberd_socket.erl
@@ -87,7 +87,7 @@
%% API
%%====================================================================
-spec start(atom(), sockmod(), socket(), [proplists:property()])
- -> {ok, pid() | independent} | {error, inet:posix() | any()}.
+ -> {ok, pid() | independent} | {error, inet:posix() | any()} | ignore.
start(Module, SockMod, Socket, Opts) ->
case Module:socket_type() of
independent -> {ok, independent};