Geoffrey Young wrote on 5/3/04, 8:02 PM:

 > > 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");


 > > 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.
 >
 > that's really strange.  are you sure that you are not removing it in your
 > application someplace?  try tweaking the test tarball I mentioned bit
 > by bit
 > until it has the relevant logic from your code in it.  I can't tell
 > you the
 > number of bugs I've "fixed" by trying to reproduce the bug, only to
 > find I
 > was the bug :)


Geoff,
So I haven't been able to get very far on the code to test this further, 
but in the Eagle book I noticed this (section 9.1.4):

"subprocess_env() is only required if you need to change the environment 
in a subprocess launched by a different handler or module."

So what would happen if the C module is setting it's own ENV instead of 
using ap_table_set? Would that explain why I can't see the value in the 
perl module using subprocess_env, but when I call void subprocess_env(), 
the value suddenly appears in %ENV and the subprocess table?


    --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

Reply via email to