mirror of
https://github.com/processone/ejabberd.git
synced 2024-12-22 17:28:25 +01:00
* 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 SVN Revision: 1876
This commit is contained in:
parent
70e431787e
commit
d0f1300a84
@ -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)
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user