<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="logic" id="logic">Authorization Containers</a></h2>
+<h2><a name="logic" id="logic">Authorization Containers</a><a title="Permanent link" href="#logic" class="permalink">¶</a></h2>
<p>The authorization container directives
<code class="directive"><a href="#requireall"><RequireAll></a></code>,
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="requiredirectives" id="requiredirectives">The Require Directives</a></h2>
+<h2><a name="requiredirectives" id="requiredirectives">The Require Directives</a><a title="Permanent link" href="#requiredirectives" class="permalink">¶</a></h2>
<p><code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code> provides some generic authorization
providers which can be used with the
<p>The <code>expr</code> provider allows basing authorization
decisions on arbitrary expressions.</p>
- <pre class="prettyprint lang-config">Require expr %{TIME_HOUR} -ge 9 && %{TIME_HOUR} -le 17</pre>
+ <pre class="prettyprint lang-config">Require expr "%{TIME_HOUR} -ge 9 && %{TIME_HOUR} -le 17"</pre>
<pre class="prettyprint lang-config"><RequireAll>
<p>The syntax is described in the <a href="../expr.html">ap_expr</a>
- documentation.</p>
+ documentation. Before httpd 2.4.16, the surrounding double-quotes MUST be
+ omitted.</p>
<p>Normally, the expression is evaluated before authentication. However, if
the expression returns false and references the variable
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="authzalias" id="authzalias">Creating Authorization Provider Aliases</a></h2>
+<h2><a name="authzalias" id="authzalias">Creating Authorization Provider Aliases</a><a title="Permanent link" href="#authzalias" class="permalink">¶</a></h2>
<p>Extended authorization providers can be created within the configuration
file and assigned an alias name. The alias providers can then be referenced
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="AuthMerging" id="AuthMerging">AuthMerging</a> <a name="authmerging" id="authmerging">Directive</a></h2>
+<div class="directive-section"><h2><a name="AuthMerging" id="AuthMerging">AuthMerging</a> <a name="authmerging" id="authmerging">Directive</a><a title="Permanent link" href="#authmerging" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Controls the manner in which each configuration section's
authorization logic is combined with that of preceding configuration
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="AuthzProviderAlias" id="AuthzProviderAlias"><AuthzProviderAlias></a> <a name="authzprovideralias" id="authzprovideralias">Directive</a></h2>
+<div class="directive-section"><h2><a name="AuthzProviderAlias" id="AuthzProviderAlias"><AuthzProviderAlias></a> <a name="authzprovideralias" id="authzprovideralias">Directive</a><a title="Permanent link" href="#authzprovideralias" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose a group of directives that represent an
extension of a base authorization provider and referenced by the specified
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="AuthzSendForbiddenOnFailure" id="AuthzSendForbiddenOnFailure">AuthzSendForbiddenOnFailure</a> <a name="authzsendforbiddenonfailure" id="authzsendforbiddenonfailure">Directive</a></h2>
+<div class="directive-section"><h2><a name="AuthzSendForbiddenOnFailure" id="AuthzSendForbiddenOnFailure">AuthzSendForbiddenOnFailure</a> <a name="authzsendforbiddenonfailure" id="authzsendforbiddenonfailure">Directive</a><a title="Permanent link" href="#authzsendforbiddenonfailure" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Send '403 FORBIDDEN' instead of '401 UNAUTHORIZED' if
authentication succeeds but authorization fails
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="Require" id="Require">Require</a> <a name="require" id="require">Directive</a></h2>
+<div class="directive-section"><h2><a name="Require" id="Require">Require</a> <a name="require" id="require">Directive</a><a title="Permanent link" href="#require" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Tests whether an authenticated user is authorized by
an authorization provider.</td></tr>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RequireAll" id="RequireAll"><RequireAll></a> <a name="requireall" id="requireall">Directive</a></h2>
+<div class="directive-section"><h2><a name="RequireAll" id="RequireAll"><RequireAll></a> <a name="requireall" id="requireall">Directive</a><a title="Permanent link" href="#requireall" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose a group of authorization directives of which none
must fail and at least one must succeed for the enclosing directive to
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RequireAny" id="RequireAny"><RequireAny></a> <a name="requireany" id="requireany">Directive</a></h2>
+<div class="directive-section"><h2><a name="RequireAny" id="RequireAny"><RequireAny></a> <a name="requireany" id="requireany">Directive</a><a title="Permanent link" href="#requireany" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose a group of authorization directives of which one
must succeed for the enclosing directive to succeed.</td></tr>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="RequireNone" id="RequireNone"><RequireNone></a> <a name="requirenone" id="requirenone">Directive</a></h2>
+<div class="directive-section"><h2><a name="RequireNone" id="RequireNone"><RequireNone></a> <a name="requirenone" id="requirenone">Directive</a><a title="Permanent link" href="#requirenone" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose a group of authorization directives of which none
must succeed for the enclosing directive to not fail.</td></tr>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1814035 -->
+<!-- English Revision: 1814035:1829390 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1818968 -->
+<!-- English Revision: 1818968:1829713 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<p>This module does not provide any configuration directives of its own.
It requires the services of <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>, and
-provides the <code>byrequests</code> load balancing method..</p>
+provides the <code>byrequests</code> load balancing method.</p>
</div>
<div id="quickview"><h3>Topics</h3>
<ul id="topics">
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="requests" id="requests">Request Counting Algorithm</a></h2>
+<h2><a name="requests" id="requests">Request Counting Algorithm</a><a title="Permanent link" href="#requests" class="permalink">¶</a></h2>
<p>Enabled via <code>lbmethod=byrequests</code>, the idea behind this
scheduler is that we distribute the requests among the
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1324697 -->
+<!-- English Revision: 1324697:1829613 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<p>This module does not provide any configuration directives of its own.
It requires the services of <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code>, and
-provides the <code>bytraffic</code> load balancing method..</p>
+provides the <code>bytraffic</code> load balancing method.</p>
</div>
<div id="quickview"><h3>Topics</h3>
<ul id="topics">
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="traffic" id="traffic">Weighted Traffic Counting Algorithm</a></h2>
+<h2><a name="traffic" id="traffic">Weighted Traffic Counting Algorithm</a><a title="Permanent link" href="#traffic" class="permalink">¶</a></h2>
<p>Enabled via <code>lbmethod=bytraffic</code>, the idea behind this
scheduler is very similar to the Request Counting method, with
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1174747 -->
+<!-- English Revision: 1174747:1829613 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available in version 2.3 and later</td></tr></table>
<h3>Summary</h3>
-<p>lbmethod=heartbeat uses the services of <code class="module"><a href="../mod/mod_heartmonitor.html">mod_heartmonitor</a></code> to balance between origin servers that are providing
+<p><code>lbmethod=heartbeat</code> uses the services of <code class="module"><a href="../mod/mod_heartmonitor.html">mod_heartmonitor</a></code> to balance between origin servers that are providing
heartbeat info via the <code class="module"><a href="../mod/mod_heartbeat.html">mod_heartbeat</a></code> module.</p>
<p> This modules load balancing algorithm favors servers with more ready (idle)
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="HeartbeatStorage" id="HeartbeatStorage">HeartbeatStorage</a> <a name="heartbeatstorage" id="heartbeatstorage">Directive</a></h2>
+<div class="directive-section"><h2><a name="HeartbeatStorage" id="HeartbeatStorage">HeartbeatStorage</a> <a name="heartbeatstorage" id="heartbeatstorage">Directive</a><a title="Permanent link" href="#heartbeatstorage" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Path to read heartbeat data</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>HeartbeatStorage <var>file-path</var></code></td></tr>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1673947 -->
+<!-- English Revision: 1673947:1829613 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="scheduler" id="scheduler">Load balancer scheduler algorithm</a></h2>
+<h2><a name="scheduler" id="scheduler">Load balancer scheduler algorithm</a><a title="Permanent link" href="#scheduler" class="permalink">¶</a></h2>
- <p>At present, there are 3 load balancer scheduler algorithms available
- for use: Request Counting, Weighted Traffic Counting and Pending Request
- Counting. These are controlled via the <code>lbmethod</code> value of
+ <p>At present, there are 4 load balancer scheduler algorithms available
+ for use: Request Counting (<code class="module"><a href="../mod/mod_lbmethod_byrequests.html">mod_lbmethod_byrequests</a></code>),
+ Weighted Traffic Counting (<code class="module"><a href="../mod/mod_lbmethod_bytraffic.html">mod_lbmethod_bytraffic</a></code>),
+ Pending Request Counting (<code class="module"><a href="../mod/mod_lbmethod_bybusyness.html">mod_lbmethod_bybusyness</a></code>) and
+ Heartbeat Traffic Counting (<code class="module"><a href="../mod/mod_lbmethod_heartbeat.html">mod_lbmethod_heartbeat</a></code>).
+ These are controlled via the <code>lbmethod</code> value of
the Balancer definition. See the <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>
directive for more information, especially regarding how to
configure the Balancer and BalancerMembers.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="stickyness" id="stickyness">Load balancer stickyness</a></h2>
+<h2><a name="stickyness" id="stickyness">Load balancer stickyness</a><a title="Permanent link" href="#stickyness" class="permalink">¶</a></h2>
<p>The balancer supports stickyness. When a request is proxied
to some back-end, then all following requests from the same user
itself. The URL encoding is usually done on the back-end.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="example" id="example">Examples of a balancer configuration</a></h2>
+<h2><a name="example" id="example">Examples of a balancer configuration</a><a title="Permanent link" href="#example" class="permalink">¶</a></h2>
<p>Before we dive into the technical details, here's an example of
how you might use <code class="module"><a href="../mod/mod_proxy_balancer.html">mod_proxy_balancer</a></code> to provide
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="environment" id="environment">Exported Environment Variables</a></h2>
+<h2><a name="environment" id="environment">Exported Environment Variables</a><a title="Permanent link" href="#environment" class="permalink">¶</a></h2>
<p>At present there are 6 environment variables exported:</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="balancer_manager" id="balancer_manager">Enabling Balancer Manager Support</a></h2>
+<h2><a name="balancer_manager" id="balancer_manager">Enabling Balancer Manager Support</a><a title="Permanent link" href="#balancer_manager" class="permalink">¶</a></h2>
<p>This module <em>requires</em> the service of
<code class="module"><a href="../mod/mod_status.html">mod_status</a></code>.
containers can be dynamically controlled by the Manager.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="stickyness_implementation" id="stickyness_implementation">Details on load balancer stickyness</a></h2>
+<h2><a name="stickyness_implementation" id="stickyness_implementation">Details on load balancer stickyness</a><a title="Permanent link" href="#stickyness_implementation" class="permalink">¶</a></h2>
<p>When using cookie based stickyness, you need to configure the
name of the cookie that contains the information about which back-end
for the same request, the information from the request parameter is used.</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="stickyness_troubleshooting" id="stickyness_troubleshooting">Troubleshooting load balancer stickyness</a></h2>
+<h2><a name="stickyness_troubleshooting" id="stickyness_troubleshooting">Troubleshooting load balancer stickyness</a><a title="Permanent link" href="#stickyness_troubleshooting" class="permalink">¶</a></h2>
<p>If you experience stickyness errors, e.g. users lose their
application sessions and need to login again, you first want to
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision: 1803313 -->
+<!-- English Revision: 1803313:1829613 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.ja.xsl"?>
-<!-- English Revision: 395228:1803313 (outdated) -->
+<!-- English Revision: 395228:1829613 (outdated) -->
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
<variant outdated="yes">ja</variant>
</variants>
</metafile>
<tr><th><a href="module-dict.html#SourceFile">SourceĀ File:</a></th><td>mod_slotmem_plain.c</td></tr></table>
<h3>Summary</h3>
- <p><code>mod_slotmem_plain</code> is a memory provider which
+ <p><code class="module"><a href="../mod/mod_slotmem_plain.html">mod_slotmem_plain</a></code> is a memory provider which
provides for creation and access to a plain memory segment
in which the datasets are organized in "slots."
</p>
<code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code>.
</p>
- <p><code>mod_slotmem_plain</code> provides the following API functions:
+ <p><code class="module"><a href="../mod/mod_slotmem_plain.html">mod_slotmem_plain</a></code> provides the following API functions:
</p>
- <dl>
- <dt>apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>
- <dd>call the callback on all worker slots</dd>
+<pre class="prettyprint lang-c">/* call the callback on all worker slots */
+apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
- <dt>apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)</dt>
- <dd>create a new slotmem with each item size is item_size.</dd>
+/* create a new slotmem with each item size is item_size */
+apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)
- <dt>apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)</dt>
- <dd>attach to an existing slotmem.</dd>
+/* attach to an existing slotmem */
+apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
- <dt>apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)</dt>
- <dd>get the direct pointer to the memory associated with this worker slot.</dd>
+/* get the direct pointer to the memory associated with this worker slot */
+apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void **mem)
- <dt>apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)</dt>
- <dd>get/read the memory from this slot to dest</dd>
+/* get/read the memory from this slot to dest */
+apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)
- <dt>apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)</dt>
- <dd>put/write the data from src to this slot</dd>
+/* put/write the data from src to this slot */
+apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)
- <dt>unsigned int num_slots(ap_slotmem_instance_t *s)</dt>
- <dd>return the total number of slots in the segment</dd>
+/* return the total number of slots in the segment */
+unsigned int num_slots(ap_slotmem_instance_t *s)
- <dt>apr_size_t slot_size(ap_slotmem_instance_t *s)</dt>
- <dd>return the total data size, in bytes, of a slot in the segment</dd>
+/* return the total data size, in bytes, of a slot in the segment */
+apr_size_t slot_size(ap_slotmem_instance_t *s)
- <dt>apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id);</dt>
- <dd>grab or allocate the first free slot and mark as in-use (does not do any data copying)</dd>
+/* grab or allocate the first free slot and mark as in-use (does not do any data copying) */
+apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id)
- <dt>apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>forced grab or allocate the specified slot and mark as in-use (does not do any data copying)</dd>
+/* forced grab or allocate the specified slot and mark as in-use (does not do any data copying) */
+apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id)
+
+/* release or free a slot and mark as not in-use (does not do any data copying) */
+apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id)</pre>
- <dt>apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>release or free a slot and mark as not in-use (does not do any data copying)</dd>
- </dl>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1673947 -->
+<!-- English Revision: 1673947:1829678 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- $LastChangedRevision: 2015050301 $ -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<tr><th><a href="module-dict.html#SourceFile">SourceĀ File:</a></th><td>mod_slotmem_shm.c</td></tr></table>
<h3>Summary</h3>
- <p><code>mod_slotmem_shm</code> is a memory provider which
+ <p><code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code> is a memory provider which
provides for creation and access to a shared memory segment
in which the datasets are organized in "slots."
</p>
<code class="directive"><a href="../mod/core.html#defaultruntimedir">DefaultRuntimeDir</a></code> directive.
</p>
- <p><code>mod_slotmem_shm</code> provides the following API functions:
+ <p><code class="module"><a href="../mod/mod_slotmem_shm.html">mod_slotmem_shm</a></code> provides the following API functions:
</p>
- <dl>
- <dt>apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>
- <dd>call the callback on all worker slots</dd>
+<pre class="prettyprint lang-c">/* call the callback on all worker slots */
+apr_status_t doall(ap_slotmem_instance_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)
- <dt>apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)</dt>
- <dd>create a new slotmem with each item size is item_size. <code>name</code> is used to generate a filename for the persistent store of
- the shared memory if configured. Values are:
- <dl>
- <dt><code>"none"</code></dt>
- <dd><code>Anonymous shared memory and no persistent store</code></dd>
- <dt><code>"file-name"</code></dt>
- <dd><code>[DefaultRuntimeDir]/file-name</code></dd>
- <dt><code>"/absolute-file-name"</code></dt>
- <dd><code>Absolute file name</code></dd>
- </dl></dd>
+/* create a new slotmem with each item size is item_size. 'name' is used to generate a filename for the persistent
+ store of the shared memory if configured. Values are:
+ "none" - Anonymous shared memory and no persistent store
+ "file-name" - [DefaultRuntimeDir]/file-name
+ "/absolute-file-name" - Absolute file name */
+apr_status_t create(ap_slotmem_instance_t **new, const char *name, apr_size_t item_size, unsigned int item_num, ap_slotmem_type_t type, apr_pool_t *pool)
- <dt>apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)</dt>
- <dd>attach to an existing slotmem. See <code>create</code> for description of <code>name</code> parameter.</dd>
+/* attach to an existing slotmem. See 'create()' for description of 'name' parameter */
+apr_status_t attach(ap_slotmem_instance_t **new, const char *name, apr_size_t *item_size, unsigned int *item_num, apr_pool_t *pool)
- <dt>apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void**mem)</dt>
- <dd>get the direct pointer to the memory associated with this worker slot.</dd>
+/* get the direct pointer to the memory associated with this worker slot */
+apr_status_t dptr(ap_slotmem_instance_t *s, unsigned int item_id, void **mem)
- <dt>apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)</dt>
- <dd>get/read the memory from this slot to dest</dd>
+/* get/read the memory from this slot to dest */
+apr_status_t get(ap_slotmem_instance_t *s, unsigned int item_id, unsigned char *dest, apr_size_t dest_len)
- <dt>apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)</dt>
- <dd>put/write the data from src to this slot</dd>
+/* put/write the data from src to this slot */
+apr_status_t put(ap_slotmem_instance_t *slot, unsigned int item_id, unsigned char *src, apr_size_t src_len)
- <dt>unsigned int num_slots(ap_slotmem_instance_t *s)</dt>
- <dd>return the total number of slots in the segment</dd>
+/* return the total number of slots in the segment */
+unsigned int num_slots(ap_slotmem_instance_t *s)
- <dt>apr_size_t slot_size(ap_slotmem_instance_t *s)</dt>
- <dd>return the total data size, in bytes, of a slot in the segment</dd>
+/* return the total data size, in bytes, of a slot in the segment */
+apr_size_t slot_size(ap_slotmem_instance_t *s)
- <dt>apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id);</dt>
- <dd>grab or allocate the first free slot and mark as in-use (does not do any data copying)</dd>
+/* grab or allocate the first free slot and mark as in-use (does not do any data copying) */
+apr_status_t grab(ap_slotmem_instance_t *s, unsigned int *item_id)
- <dt>apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>forced grab or allocate the specified slot and mark as in-use (does not do any data copying)</dd>
+/* forced grab or allocate the specified slot and mark as in-use (does not do any data copying) */
+apr_status_t fgrab(ap_slotmem_instance_t *s, unsigned int item_id)
+
+/* release or free a slot and mark as not in-use (does not do any data copying) */
+apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id)</pre>
- <dt>apr_status_t release(ap_slotmem_instance_t *s, unsigned int item_id);</dt>
- <dd>release or free a slot and mark as not in-use (does not do any data copying)</dd>
- </dl>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1394079 -->
+<!-- English Revision: 1394079:1829678 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- $LastChangedRevision: 2012100601 $ -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>
<li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
-<h2><a name="logging" id="logging">Logging</a></h2>
+<h2><a name="logging" id="logging">Logging</a><a title="Permanent link" href="#logging" class="permalink">¶</a></h2>
<p><code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code> sets a cookie which can be logged
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="CookieDomain" id="CookieDomain">CookieDomain</a> <a name="cookiedomain" id="cookiedomain">Directive</a></h2>
+<div class="directive-section"><h2><a name="CookieDomain" id="CookieDomain">CookieDomain</a> <a name="cookiedomain" id="cookiedomain">Directive</a><a title="Permanent link" href="#cookiedomain" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The domain to which the tracking cookie applies</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieDomain <em>domain</em></code></td></tr>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="CookieExpires" id="CookieExpires">CookieExpires</a> <a name="cookieexpires" id="cookieexpires">Directive</a></h2>
+<div class="directive-section"><h2><a name="CookieExpires" id="CookieExpires">CookieExpires</a> <a name="cookieexpires" id="cookieexpires">Directive</a><a title="Permanent link" href="#cookieexpires" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Expiry time for the tracking cookie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieExpires <em>expiry-period</em></code></td></tr>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="CookieName" id="CookieName">CookieName</a> <a name="cookiename" id="cookiename">Directive</a></h2>
+<div class="directive-section"><h2><a name="CookieName" id="CookieName">CookieName</a> <a name="cookiename" id="cookiename">Directive</a><a title="Permanent link" href="#cookiename" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Name of the tracking cookie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieName <em>token</em></code></td></tr>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="CookieStyle" id="CookieStyle">CookieStyle</a> <a name="cookiestyle" id="cookiestyle">Directive</a></h2>
+<div class="directive-section"><h2><a name="CookieStyle" id="CookieStyle">CookieStyle</a> <a name="cookiestyle" id="cookiestyle">Directive</a><a title="Permanent link" href="#cookiestyle" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Format of the cookie header field</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieStyle
- <em>Netscape|Cookie|Cookie2|RFC2109|RFC2965</em></code></td></tr>
+ Netscape|Cookie|Cookie2|RFC2109|RFC2965</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CookieStyle Netscape</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
-<div class="directive-section"><h2><a name="CookieTracking" id="CookieTracking">CookieTracking</a> <a name="cookietracking" id="cookietracking">Directive</a></h2>
+<div class="directive-section"><h2><a name="CookieTracking" id="CookieTracking">CookieTracking</a> <a name="cookietracking" id="cookietracking">Directive</a><a title="Permanent link" href="#cookietracking" class="permalink">¶</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables tracking cookie</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CookieTracking on|off</code></td></tr>
<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
-<!-- English Revision : 1674195 -->
+<!-- English Revision: 1674195:1829393 (outdated) -->
<!-- French translation : Lucien GENTIS -->
<!-- $LastChangedRevision: 2015042601 $ -->
<variants>
<variant>en</variant>
- <variant>fr</variant>
+ <variant outdated="yes">fr</variant>
</variants>
</metafile>