RE: APREQ_ERROR_MISMATCH error, I think

Mark Hedges <[email protected]> Mon, 23 Jun 2014 23:03:39 +0000
Newsgroups gmane.comp.apache.apreq,gmane.comp.apache.mod-perl
Message-ID <55EEF0B3C5BF2744B2248754D717EE4C4B3555@USASHEXMB02.LYV.LiveNation.com>
D'oh sorry bad value for POST_MAX, please ignore.  -Mark

-----Original Message-----
From: Mark Hedges=20
Sent: Monday, June 23, 2014 4:02 PM
To: [email protected]; mod_perl list
Cc: Mark Hedges
Subject: RE: APREQ_ERROR_MISMATCH error, I think

No one seems home on the apreq-dev list so I'm ccing mod_perl in the hope s=
omeone can help.  Sorry if that annoys anyone.

I rebuilt everything using perl 5.20.0, Apache 2.2.27 will all the mods, mo=
d_perl svn trunk.

When I use Apache2::Request, I get a server error, it fails with the messag=
e "Conflicting information," which seems to be related to the APREQ_ERROR_M=
ISMATCH constant, but I don't know how to debug this.

When I comment out creating the Apache2::Request object from $r, my dummy t=
est handler runs fine.

How would I try to debug this?

Mark

-----Original Message-----
From: Mark Hedges=20
Sent: Friday, June 20, 2014 5:51 PM
To: [email protected]
Cc: Mark Hedges
Subject: APREQ_ERROR_MISMATCH error, I think

Any clues for the clueless?

This is accompanied by a 500 internal server error.

The same handler works fine when I do not use Apache2::Request.  It is just=
 a test handler to print out a string.

Thanks.
-Mark

-----------------------
t/logs/error_log:
----
[Fri Jun 20 17:43:13.014222 2014] [mpm_event:notice] [pid 30042:tid 4760281=
1847312] AH00489: Apache/2.4.9 (Unix) mod_apreq2-20090110/2.8.0 mod_perl/2.=
0.9dev Perl/v5.20.0 configured -- resuming normal operations
...
[Fri Jun 20 17:43:13.014745 2014] [mpm_event:debug] [pid 30043:tid 10886986=
88] event.c(1949): AH02471: start_threads: Using epoll
...
[Fri Jun 20 17:43:14.934954 2014] [authz_core:debug] [pid 30043:tid 1120168=
256] mod_authz_core.c(828): [client 127.0.0.1:60081] AH01628: authorization=
 result: granted (no directives)
[Fri Jun 20 17:43:14.953412 2014] [perl:error] [pid 30043:tid 1120168256] [=
client 127.0.0.1:60081] Conflicting information


-------------------------
extra.last.conf.in:
---
PerlSetEnv NTF_TEST_DIR @ServerRoot@

#LoadModule allowmethods_module /ntfhome/local/libexec/httpd/mod_allowmetho=
ds.so

# where Apache2::Controller and the test application libs can be found
PerlSwitches -I@ServerRoot@/blib
PerlLoadModule Apache2::RequestRec
PerlLoadModule Apache2::RequestIO
PerlLoadModule Apache2::Log
PerlLoadModule Apache2::RequestUtil

<Perl>
    use NTF::Handler::NTR;
    $NTFHandlers::NTR =3D NTF::Handler::NTR->new();
</Perl>

# startup file handled by Apache::Test
# (add stuff to t/conf/modperl_extra.pl)

<LocationMatch '^/foo\b'>
    SetHandler modperl
    PerlResponseHandler $NTFHandlers::NTR->redirect
</LocationMatch>

-------------------------------
package NTF::Handler::NTR;

use strict;
use warnings FATAL =3D> 'all';
use English '-no_match_vars';

use YAML::XS;
use Readonly;

Readonly::Hash my %APREQ_NEW_PARAMS =3D> (
    POST_MAX            =3D> 1,
    MAX_BODY            =3D> 1,
    DISABLE_UPLOADS     =3D> 1,
);

use Apache2::Const -compile =3D> qw(
    OK
    HTTP_OK
    REDIRECT
    HTTP_BAD_REQUEST
);

use Apache2::Log;
use Apache2::RequestIO;
# use Apache2::Request;

sub new { return bless {}, __PACKAGE__ }

sub redirect : method {
    my ($self, $r) =3D @_;

    # minor annoyance, have to do this every time
    $self->{r} =3D $r;
 #  my $req =3D Apache2::Request->new($r, %APREQ_NEW_PARAMS);

    $r->content_type('text/plain');
    $self->{r}->print("KIRK\n");

    delete $self->{r};
    delete $self->{apreq};

    return Apache2::Const::OK;
}