Name
Prerun Fixups
Synopsis
int module_fixups(request_rec *pReq)
Nearly there! This is your last chance to do anything that might be
needed before the request is finally handled. At this point, all
processing that is going to be done before the request is handled has
been completed, the request is going to be satisfied, and all that is
left to do is anything the request handler won’t do.
Examples of what you might do here include setting environment
variables for CGI scripts, adding headers to
pReq->header_out
, or even setting something to
modify the behavior of another module’s handler in
pReq->notes
. Things you probably
shouldn’t do at this stage are many, but, most
importantly, you should leave anything security-related alone,
including (but certainly not limited to) the URL, the filename, and
the username. Most modules won’t use this hook
because they do their real work elsewhere.
As an example, we will set the environment variables for a shell script. Example 21-21 shows where it’s done in mod_env.c.
Example
static int fixup_env_module(request_rec *r) { table *e = r->subprocess_env; env_dir_config_rec *sconf = ap_get_module_config(r->per_dir_config, &env_module); table *vars = sconf->vars; if (!sconf->vars_present) return DECLINED; r->subprocess_env = ap_overlay_tables(r->pool, e, vars); return OK; }
Notice that this doesn’t directly set the environment variables; that would be pointless because a subprocess’s environment variables are created anew from ...
Get Apache: The Definitive Guide, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.