diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | doc/guide.html | 10 | ||||
-rw-r--r-- | doc/guide.tex | 7 | ||||
-rw-r--r-- | src/web/ejabberd_http_poll.erl | 13 |
4 files changed, 30 insertions, 5 deletions
@@ -1,5 +1,10 @@ 2009-02-14 Badlop <badlop@process-one.net> + * src/web/ejabberd_http_poll.erl: Allow configuration of session + timeout, using new global option http_poll_timeout (EJAB-135) + * doc/guide.tex: Document new option + * doc/guide.html: Likewise + * src/ejabberd_listener.erl: Report error at startup if a listener module isn't available or is not an ejabberd listener (EJAB-868) diff --git a/doc/guide.html b/doc/guide.html index 55ce1dc69..452131d97 100644 --- a/doc/guide.html +++ b/doc/guide.html @@ -712,8 +712,11 @@ do not allow outgoing sockets on port 5222.<P>If HTTP Polling is enabled, it wil <CODE>http://server:port/http-poll/</CODE>. Be aware that support for HTTP Polling is also needed in the Jabber client. Remark also that HTTP Polling can be interesting to host a web-based Jabber client such as -<A HREF="http://jwchat.sourceforge.net/">JWChat</A>. -</P></DD><DT CLASS="dt-description"><B><TT>{max_stanza_size, Size}</TT></B></DT><DD CLASS="dd-description"> +<A HREF="http://jwchat.sourceforge.net/">JWChat</A>.</P><P>The maximum period of time to keep a client session active without +an incoming POST request can be configured with the global option +<TT>http_poll_timeout</TT>. The default value is five minutes. +The option can be defined in <TT>ejabberd.cfg</TT>, expressing the time +in seconds: <CODE>{http_poll_timeout, 300}.</CODE></P></DD><DT CLASS="dt-description"><B><TT>{max_stanza_size, Size}</TT></B></DT><DD CLASS="dd-description"> This option specifies an approximate maximum size in bytes of XML stanzas. Approximate, because it is calculated with the precision of one block of readed @@ -3370,7 +3373,8 @@ If a process in the <TT>ejabberd</TT> server consumes more memory than the confi a message is sent to the Jabber accounts defined with the option <TT>watchdog_admins</TT> in the <TT>ejabberd</TT> configuration file.</P><P>The memory consumed is measured in <TT>words</TT>: -a word on 32-bit architecture is 4 bytes, and a word on 64-bit architecture 8 bytes. +a word on 32-bit architecture is 4 bytes, +and a word on 64-bit architecture is 8 bytes. The threshold by default is 1000000 words. This value can be configured with the option <TT>watchdog_large_heap</TT>, or in a conversation with the watchdog alert bot.</P><P>Example configuration: diff --git a/doc/guide.tex b/doc/guide.tex index 169dc612e..f5231affa 100644 --- a/doc/guide.tex +++ b/doc/guide.tex @@ -854,6 +854,13 @@ This is a detailed description of each option allowed by the listening modules: is also needed in the \Jabber{} client. Remark also that HTTP Polling can be interesting to host a web-based \Jabber{} client such as \footahref{http://jwchat.sourceforge.net/}{JWChat}. + + The maximum period of time to keep a client session active without + an incoming POST request can be configured with the global option + \term{http\_poll\_timeout}. The default value is five minutes. + The option can be defined in \term{ejabberd.cfg}, expressing the time + in seconds: \verb|{http_poll_timeout, 300}.| + \titem{\{max\_stanza\_size, Size\}} \ind{options!max\_stanza\_size}This option specifies an approximate maximum size in bytes of XML stanzas. Approximate, 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, |