aboutsummaryrefslogtreecommitdiff
path: root/src/web/ejabberd_http_poll.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/web/ejabberd_http_poll.erl')
-rw-r--r--src/web/ejabberd_http_poll.erl13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/web/ejabberd_http_poll.erl b/src/web/ejabberd_http_poll.erl
index b7829949f..9a41fc362 100644
--- a/src/web/ejabberd_http_poll.erl
+++ b/src/web/ejabberd_http_poll.erl
@@ -57,6 +57,7 @@
input = "",
waiting_input = false, %% {ReceiverPid, Tag}
last_receiver,
+ http_poll_timeout,
timer}).
%-define(DBGFSM, true).
@@ -181,12 +182,20 @@ init([ID, Key, IP]) ->
%% connector.
Opts = ejabberd_c2s_config:get_c2s_limits(),
+ HTTPPollTimeout = case ejabberd_config:get_local_option({http_poll_timeout,
+ ?MYNAME}) of
+ %% convert seconds of option into milliseconds
+ Int when is_integer(Int) -> Int*1000;
+ undefined -> ?HTTP_POLL_TIMEOUT
+ end,
+
Socket = {http_poll, self(), IP},
ejabberd_socket:start(ejabberd_c2s, ?MODULE, Socket, Opts),
- Timer = erlang:start_timer(?HTTP_POLL_TIMEOUT, self(), []),
+ Timer = erlang:start_timer(HTTPPollTimeout, self(), []),
{ok, loop, #state{id = ID,
key = Key,
socket = Socket,
+ http_poll_timeout = HTTPPollTimeout,
timer = Timer}}.
%%----------------------------------------------------------------------
@@ -278,7 +287,7 @@ handle_sync_event({http_put, Key, NewKey, Packet},
Receiver ! {tcp, StateData#state.socket,
list_to_binary(Packet)},
cancel_timer(StateData#state.timer),
- Timer = erlang:start_timer(?HTTP_POLL_TIMEOUT, self(), []),
+ Timer = erlang:start_timer(StateData#state.http_poll_timeout, self(), []),
Reply = ok,
{reply, Reply, StateName,
StateData#state{waiting_input = false,