On Fri, Feb 06, 2004 at 10:37:51AM -0500, [EMAIL PROTECTED] wrote:
> but Joshua has excellent points about "virtualness" being a property of the
> handler. Yes, the server-status handler should know that it is virtual,
> but the handler hook is too late to skip the directory walk. But the
> mod_status maintainers (i.e. us) know that mod_status is virtual, so maybe
> it could tell the core earlier somehow. An earlier hook? preferably
> something at config time since the virtualness doesn't ever change?
That got me thinking about a "handler capabilities" set of flags,
say, r->handler_attr, which is initialized to zeroes for each request.
The first single bit capability would be for, say,
HANDLER_ATTR_VIRTUAL_PATH (as opposed to filesystem-backed).
In processing directives, SetHandler code could modify r->handler_attr
so that mod_status could set HANDLER_ATTR_VIRTUAL_PATH, after which
<Directory> and <Files> would be skipped. Hopefully it could be worked
out that <Directory> and <Files> would be handled up until the point
where the request became virtual (/directory/path/then/virtual_path)
When it comes time to run the handler hook, modules could check this
flag in the same way that they check r->handler and r->content_type
to see if they should go ahead or DECLINE. Alternatively, the 'module'
structure could be expanded to included a capabilities set and only
modules that flagged a capability would be given a chance to handle
the request. Since the default handler only handles filesystem-backed
requests, it and other filesystem-backed modules would never see the
request.
e.g. if (!(r->handler_attr & HANDLER_ATTR_VIRTUAL_PATH)
|| (foo_module->capabilities & HANDLER_ATTR_VIRTUAL_PATH))
Cheers,
Glenn