Hello!

At work I have been having some trouble with localizing %ENV.  (This
happens in CPAN modules such as Plack::Handler::Apache2 amongst others.)

All seems well during the request itself - i.e. after the "local" goes out
of scope, %ENV is reset correctly.  However, on subsequent requests to the
same process, both MOD_PERL and MOD_PERL_API_VERSION are undefined.

We are running Debian wheezy, and have reproduced this from SVN r1600690
built against Debian's Apache.

This happens with "SetHandler perl-script", but not with "SetHandler
modperl".

Here is our minimal location block:

    <Location />
        SetHandler perl-script
        PerlResponseHandler handler
    </Location>

And our minimal handler:

package handler;

use strict;
use warnings;

use Apache2::Const -compile => qw(OK);
use Apache2::RequestRec;

sub handler {
    my $r = shift;

    no warnings 'uninitialized';

    warn "Before:\n";
    warn "MOD_PERL             => $ENV{MOD_PERL}\n";
    warn "MOD_PERL_API_VERSION => $ENV{MOD_PERL_API_VERSION}\n";

    {
        local %ENV;
    }

    warn "After:\n";
    warn "MOD_PERL             => $ENV{MOD_PERL}\n";
    warn "MOD_PERL_API_VERSION => $ENV{MOD_PERL_API_VERSION}\n\n";

    $r->content_type("text/plain");

    return Apache2::Const::OK;
}

1;

-- 
Tim Retout <t.ret...@cv-library.co.uk>
Development Manager, CV-Library

Reply via email to