<p>The first hook that does <em>not</em> return <code>DECLINED</code>
stops the loop and its return value is returned from the hook
- caller. Note that <code>DECLINED</code> is the tradition Apache
- hook return meaning "I didn't do anything", but it can be
+ caller. Note that <code>DECLINED</code> is the traditional
+ hook return value meaning "I didn't do anything", but it can be
whatever suits you.</p>
<p>Alternatively, all hooks can be run until an error occurs.
</section>
<section id="hooking-add"><title>Add a hook registering function</title>
- <p>During initialisation, Apache will call each modules hook
+ <p>During initialisation, the server will call each modules hook
registering function, which is included in the module
structure:</p>
order relative to each other, but, of course, all modules using
<code>APR_HOOK_FIRST</code> will be run before <code>APR_HOOK_MIDDLE</code>
which are before <code>APR_HOOK_LAST</code>. Modules that don't care
- when they are run should use <code>APR_HOOK_MIDDLE</code>. <em>(I spaced
- these out so people could do stuff like <code>APR_HOOK_FIRST-2</code>
- to get in slightly earlier, but is this wise? - Ben)</em></p>
+ when they are run should use <code>APR_HOOK_MIDDLE</code>. <em>These
+ values are spaced out, so that positions like <code>APR_HOOK_FIRST-2</code>
+ are possible to hook slightly earlier than other functions.</em></p>
<p>Note that there are two more values,
<code>APR_HOOK_REALLY_FIRST</code> and <code>APR_HOOK_REALLY_LAST</code>. These
<manualpage metafile="request.xml.meta">
<parentdocument href="./">Developer Documentation</parentdocument>
-<title>Request Processing in Apache 2.0</title>
+<title>Request Processing in the Apache HTTP Server 2.x</title>
<summary>
<note type="warning"><title>Warning</title>
revision!</p>
</note>
- <p>Several changes in Apache 2.0 affect the internal request
+ <p>Several changes in 2.0 and above affect the internal request
processing mechanics. Module authors need to be aware of these
changes so they may take advantage of the optimizations and
security enhancements.</p>
<p>The first major change is to the subrequest and redirect
mechanisms. There were a number of different code paths in
- Apache 1.3 to attempt to optimize subrequest or redirect
- behavior. As patches were introduced to 2.0, these
+ the Apache HTTP Server 1.3 to attempt to optimize subrequest
+ or redirect behavior. As patches were introduced to 2.0, these
optimizations (and the server behavior) were quickly broken due
to this duplication of code. All duplicate code has been folded
back into <code>ap_process_request_internal()</code> to prevent
and correct implementation of the HTTP server RFC. Additional
goals include security, scalability and optimization. New
methods were sought to optimize the server (beyond the
- performance of Apache 1.3) without introducing fragile or
+ performance of 1.3) without introducing fragile or
insecure code.</p>
</summary>
<p>To streamline requests, the module author can take advantage
of the hooks offered to drop out of the request cycle early, or
- to bypass core Apache hooks which are irrelevant (and costly in
+ to bypass core hooks which are irrelevant (and costly in
terms of CPU.)</p>
</section>
<code>parsed_uri.path</code> element is unset. The module has no further
control of this one-time unescape operation, either failing to
unescape or multiply unescaping the URL leads to security
- reprecussions.</p>
+ repercussions.</p>
</section>
<section id="strip"><title>Strips Parent and This Elements from the
switch (ap_satisfies(r)) {
case SATISFY_ALL:
case SATISFY_NOSPEC:
- if ((access_status = ap_run_access_checker(r)) != 0) {
- return decl_die(access_status, "check access", r);
- }
+ if ((access_status = ap_run_access_checker(r)) != 0) {
+ return decl_die(access_status, "check access", r);
+ }
if (ap_some_auth_required(r)) {
if (((access_status = ap_run_check_user_id(r)) != 0)