Ryan Bloom wrote:
[...]
>apr_pool_join is a no-op unless APR_POOL_DEBUG is enabled. If it isn't
>enabled, which it shouldn't be on production servers, there will be no
>performance penalty for that function.
>
Sorry, I blamed the wrong part of the code, but the core
problem still remains: we don't clean up the subrequest
(and thus don't close file descriptors for included .shtml
files) until top-level .shtml request goes out of scope.
The logic in handle_include() appears to do this on purpose:
/* destroy the sub request if it's not a nested include
* (crumb) */
if (rr != NULL
&& ap_get_module_config(rr->request_config,
&include_module) != NESTED_INCLUDE_MAGIC) {
ap_destroy_sub_req(rr);
}
What else would break if we destroyed the subreq here,
even in the case of a nested include?
--Brian