Greetings all,
So I've been trying to find an answer to this in both the archives and
in the available mod_perl books, but I have not had any luck, so I was
hoping someone on the list would know the answer.
Generally: how does subprocess_env in mod_perl 1.x behave with
non-mod_perl handlers?
It seems from the details I can find that subprocess_env is tied to the
"live" table of the apache process. However, I am seeing behavior that
seems to indicate otherwise.
Example 1:
I have mod_perl handlers defined for the TypeHandler and FixupHandler
phases. If in the TypeHandler code I do this:
$r->subprocess_env("TEST" => "value");
Then in FixupHandler I can "see" TEST using:
$something = $r->subprocess_env("TEST");
Which is what you would expect.
Example 2:
Basically the same except I have a C handler defined for TypeHandler and
a mod_perl handler defined for FixupHandler. When the C code does:
ap_table_set(r->subprocess_env, "TEST", "value");
The mod_perl handler for FixupHandler doesn't see it using:
$something = $r->subprocess_env("TEST");
If I do the void subprocess_env trick:
$r->subprocess()
before retrieving $something, then it's populated along with the rest of
the environment.
However, as mentioned in many of the docs/books, this is expensive and I
really only need the one variable.
I've also tried walking the subprocess_env table in the perl handler,
but the value set in the C handler is not there.
Are the C API subprocess_env table and the mod_perl API subprocess_env
table distict until something (like the void call) merges the tables? Is
this some sort of scoping issue between C and Perl?
Thanks,
--John
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html