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)
<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
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:
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,
input = "",
waiting_input = false, %% {ReceiverPid, Tag}
last_receiver,
+ http_poll_timeout,
timer}).
%-define(DBGFSM, true).
%% 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}}.
%%----------------------------------------------------------------------
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,