aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ejabberd_c2s.erl9
-rw-r--r--src/ejabberd_s2s_in.erl9
-rw-r--r--src/ejabberd_s2s_out.erl10
3 files changed, 22 insertions, 6 deletions
diff --git a/src/ejabberd_c2s.erl b/src/ejabberd_c2s.erl
index 007a94dc9..582327d6c 100644
--- a/src/ejabberd_c2s.erl
+++ b/src/ejabberd_c2s.erl
@@ -63,8 +63,13 @@
%%% ejabberd_socket API
%%%===================================================================
start(SockData, Opts) ->
- xmpp_stream_in:start(?MODULE, [SockData, Opts],
- ejabberd_config:fsm_limit_opts(Opts)).
+ case proplists:get_value(supervisor, Opts, true) of
+ true ->
+ supervisor:start_child(ejabberd_c2s_sup, [SockData, Opts]);
+ _ ->
+ xmpp_stream_in:start(?MODULE, [SockData, Opts],
+ ejabberd_config:fsm_limit_opts(Opts))
+ end.
start_link(SockData, Opts) ->
xmpp_stream_in:start_link(?MODULE, [SockData, Opts],
diff --git a/src/ejabberd_s2s_in.erl b/src/ejabberd_s2s_in.erl
index cca8438c6..484d0a55a 100644
--- a/src/ejabberd_s2s_in.erl
+++ b/src/ejabberd_s2s_in.erl
@@ -55,8 +55,13 @@
%%% API
%%%===================================================================
start(SockData, Opts) ->
- xmpp_stream_in:start(?MODULE, [SockData, Opts],
- ejabberd_config:fsm_limit_opts(Opts)).
+ case proplists:get_value(supervisor, Opts, true) of
+ true ->
+ supervisor:start_child(ejabberd_s2s_in_sup, [SockData, Opts]);
+ _ ->
+ xmpp_stream_in:start(?MODULE, [SockData, Opts],
+ ejabberd_config:fsm_limit_opts(Opts))
+ end.
start_link(SockData, Opts) ->
xmpp_stream_in:start_link(?MODULE, [SockData, Opts],
diff --git a/src/ejabberd_s2s_out.erl b/src/ejabberd_s2s_out.erl
index 5188d269b..6217a9f52 100644
--- a/src/ejabberd_s2s_out.erl
+++ b/src/ejabberd_s2s_out.erl
@@ -53,8 +53,14 @@
%%% API
%%%===================================================================
start(From, To, Opts) ->
- xmpp_stream_out:start(?MODULE, [ejabberd_socket, From, To, Opts],
- ejabberd_config:fsm_limit_opts([])).
+ case proplists:get_value(supervisor, Opts, true) of
+ true ->
+ supervisor:start_child(ejabberd_s2s_out_sup,
+ [ejabberd_socket, From, To, Opts]);
+ _ ->
+ xmpp_stream_out:start(?MODULE, [ejabberd_socket, From, To, Opts],
+ ejabberd_config:fsm_limit_opts([]))
+ end.
start_link(From, To, Opts) ->
xmpp_stream_out:start_link(?MODULE, [ejabberd_socket, From, To, Opts],