<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_reqtimeout.xml.meta">

<name>mod_reqtimeout</name>
<description>Set timeout and minimum data rate for receiving requests
</description>
<status>Extension</status>
<sourcefile>mod_reqtimeout.c</sourcefile>
<identifier>reqtimeout_module</identifier>
<compatibility>Available in Apache HTTPD 2.2.15 and later</compatibility>

<section id="examples"><title>Examples</title>

    <ol>
      <li>
        Allow 10 seconds to receive the request including the headers and
        30 seconds for receiving the request body:

        <example>
          RequestReadTimeout header=10 body=30
        </example>
      </li>

      <li>
        Allow at least 10 seconds to receive the request body.
        If the client sends data, increase the timeout by 1 second for every
        1000 bytes received, with no upper limit for the timeout (exept for
        the limit given indirectly by
        <directive module="core">LimitRequestBody</directive>):

        <example>
          RequestReadTimeout body=10,MinRate=1000
        </example>
      </li>

      <li>
        Allow at least 10 seconds to receive the request including the headers.
        If the client sends data, increase the timeout by 1 second for every
        500 bytes received. But do not allow more than 30 seconds for the
        request including the headers:

        <example>
          RequestReadTimeout header=10-30,MinRate=500
        </example>
      </li>

      <li>
        Usually, a server should have both header and body timeouts configured.
        If a common configuration is used for http and https virtual hosts, the
        timeouts should not be set too low:

        <example>
          RequestReadTimeout header=20-40,MinRate=500 body=20,MinRate=500
        </example>
      </li>

    </ol>
</section>

<directivesynopsis>
<name>RequestReadTimeout</name>
<description>Set timeout values for receiving request headers and body from client.
</description>
<syntax>RequestReadTimeout
[header=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>rate</var>]
[body=<var>timeout</var>[-<var>maxtimeout</var>][,MinRate=<var>rate</var>]
</syntax>
<default>header=20-40,MinRate=500 body=20,MinRate=500</default>
<contextlist><context>server config</context><context>virtual host</context>
</contextlist>
<compatibility>Available in version 2.2.15 and later; defaulted to disabled in
version 2.3.14 and earlier.</compatibility>

<usage>
    <p>This directive can set various timeouts for receiving the request headers
    and the request body from the client. If the client fails to send headers or
    body within the configured time, a <code>408 REQUEST TIME OUT</code> error
    is sent.</p>

    <p>For SSL virtual hosts, the header timeout values include the time needed
    to do the initial SSL handshake.  If the user's browser is configured to
    query certificate revocation lists and the CRL server is not reachable, the
    initial SSL handshake may take a significant time until the browser gives up
    waiting for the CRL.  Therefore the header timeout values should not be set
    to very low values for SSL virtual hosts.
    The body timeout values include the time needed for SSL renegotiation
    (if necessary).</p>

    <p>When an <directive module="core">AcceptFilter</directive> is in use
    (usually the case on Linux and FreeBSD), the socket is not sent to the
    server process before at least one byte (or the whole request for
    <code>httpready</code>) is received. The header timeout configured with
    <code>RequestReadTimeout</code> is only effective after the server process has
    received the socket.</p>

    <p>For each of the two timeout types (header or body), there are three ways
    to specify the timeout:
    </p>

    <ul>

    <li><strong>Fixed timeout value</strong>:<br />

    <example><var>type</var>=<var>timeout</var></example>

    <p>The time in seconds allowed for reading all of the request headers or
    body, respectively. A value of 0 means no limit.</p>
    </li>

    <li><strong>Disable module for a vhost:</strong>:<br />

    <example>header=0 body=0</example>

    <p>This disables <module>mod_reqtimeout</module> completely.</p>
    </li>

    <li><strong>Timeout value that is increased when data is
    received</strong>:<br />
    <example>
    <var>type</var>=<var>timeout</var>,MinRate=<var>data_rate</var>
    </example>

    <p>Same as above, but whenever data is received, the timeout value is
    increased according to the specified minimum data rate (in bytes per
    second).</p>
    </li>

    <li><strong>Timeout value that is increased when data is received, with an
    upper bound</strong>:<br />
    <example>
    <var>type</var>=<var>timeout</var>-<var>maxtimeout</var>,MinRate=<var>data_rate</var>
    </example>

    <p>Same as above, but the timeout will not be increased above the second
    value of the specified timeout range.</p>
    </li>

    </ul>

</usage>

</directivesynopsis>

</modulesynopsis>
