diff options
Diffstat (limited to 'src/web/ejabberd_http_poll.erl')
-rw-r--r-- | src/web/ejabberd_http_poll.erl | 13 |
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, |