aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_service.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <xramtsov@gmail.com>2009-10-07 14:24:09 +0000
committerEvgeniy Khramtsov <xramtsov@gmail.com>2009-10-07 14:24:09 +0000
commit14232df14c4fda26680d3d305b70471d569012ec (patch)
treeff0227e4bc56eba5f61f25da5f9cd63737a90b95 /src/ejabberd_service.erl
parentuse queue to reduced quadratic time effort on selective receive (thanks to Al... (diff)
new option added: max_fsm_queue. removed hardcoded FSMLIMITS
SVN Revision: 2645
Diffstat (limited to 'src/ejabberd_service.erl')
-rw-r--r--src/ejabberd_service.erl21
1 files changed, 15 insertions, 6 deletions
diff --git a/src/ejabberd_service.erl b/src/ejabberd_service.erl
index 2305407b0..09b19c9b7 100644
--- a/src/ejabberd_service.erl
+++ b/src/ejabberd_service.erl
@@ -64,10 +64,6 @@
-define(FSMOPTS, []).
-endif.
-%% Only change this value if you now what your are doing:
--define(FSMLIMITS,[]).
-%% -define(FSMLIMITS, [{max_queue, 2000}]).
-
-define(STREAM_HEADER,
"<?xml version='1.0'?>"
"<stream:stream "
@@ -106,8 +102,8 @@ start(SockData, Opts) ->
supervisor:start_child(ejabberd_service_sup, [SockData, Opts]).
start_link(SockData, Opts) ->
- ?GEN_FSM:start_link(
- ejabberd_service, [SockData, Opts], ?FSMLIMITS ++ ?FSMOPTS).
+ ?GEN_FSM:start_link(ejabberd_service, [SockData, Opts],
+ fsm_limit_opts(Opts) ++ ?FSMOPTS).
socket_type() ->
xml_stream.
@@ -390,3 +386,16 @@ send_element(StateData, El) ->
new_id() ->
randoms:get_string().
+
+fsm_limit_opts(Opts) ->
+ case lists:keysearch(max_fsm_queue, 1, Opts) of
+ {value, {_, N}} when is_integer(N) ->
+ [{max_queue, N}];
+ _ ->
+ case ejabberd_config:get_local_option(max_fsm_queue) of
+ N when is_integer(N) ->
+ [{max_queue, N}];
+ _ ->
+ []
+ end
+ end.