Any ideas ?

Gaetan

2008/10/7 titetluc titetluc <[EMAIL PROTECTED]>

> Hello all,
>
> I am developing a new module which defines 2 new directives (TestDirective1
> and TestDirective2). These directives are usable in a container (Location,
> Directory, ...).
> The following code defines the directives :
>
> =====BEGIN CODE=====================================
> package TestDirective;
> use warnings;
> use strict;
> use Carp;
>
> use Apache2::Const -compile => qw(RAW_ARGS);
> use Apache2::CmdParms ();
> use Apache2::Module ();
> use Apache2::Directive ();
> use Apache2::Const qw(:common);
>
> my @directives = (
>           {
>               name         => 'TestDirective1',
>               func         => __PACKAGE__ . '::TestDirective1',
>               args_how     => Apache2::Const::RAW_ARGS,
>           },
>           {
>               name         => 'TestDirective2',
>               func         => __PACKAGE__ . '::TestDirective2',
>               args_how     => Apache2::Const::RAW_ARGS,
>           },
>           );
>
> Apache2::Module::add(__PACKAGE__, [EMAIL PROTECTED]);
>
> sub TestDirective1 {
>     my ($self, $parms, $arg) = @_;
>     print STDERR "hello\n";
>     $self->{TestDirective1} = 'hello';
>     return;
> }
>
> sub TestDirective2 {
>     my ($self, $parms, $arg) = @_;
>     my $td1 = Apache2::Module::get_config(__PACKAGE__, $parms->server);
>
>     if (defined $td1){
>         print STDERR "world\n";
>     }
>     $self->{TestDirective2} = 'world';
>     return;
> }
>
>
> sub response {
>     my ($self,$r) = @_;
>     print 'hello world';
>     return OK;
> }
>
> 1;
>
> =====END CODE======================================
>
>
> When using the new directives with the following configuration file
>
> =====BEGIN CONFIG======================================
> PerlLoadModule TestDirective;
>
> <Location /test>
>     SetHandler perl-script
>     TestDirective1
>     TestDirective2
>
>     PerlResponseHandler TestDirectives->response
> </Location>
> =====END CONFIG======================================
>
>  STDERR output, when starting Apache, is
> "hello
> world"
> =>  correct
>
>
> But when using the new directives with the following configuration file
>
> =====BEGIN CONFIG======================================
> PerlLoadModule TestDirective;
>
> <Location /test>
>     SetHandler perl-script
>     TestDirective2
>
>     PerlResponseHandler TestDirectives->response
> </Location>
> =====END CONFIG======================================
>
> STDERR output, when starting Apache, is
> "world"
> =>  incorrect
>
> STDERR is not empty (it should)
> What is wrong in the TestDirective::TestDirective2 function ?
> Which test do I have to apply ('defined $td1' is not the correct test !!!)
> ?
>
> Thanks
>
> Gaetan
>
>

Reply via email to