All,

The access2.t test fails when mod_perl 2.0.3 is built against the httpd
trunk. The core problem is that the test script needs the httpd ap_requires
function; however  the log shows that the ap_requires function has been
removed from httpd:

relocation error:
/home/mmsadm/Projects/mod_perl-2.0.3/blib/arch/auto/Apache2/Access/Access.so:
undefined symbol: ap_requires

The relevant code in t/repsonse/TestAPI/access2.pm  is:

# extract just the requirement entries
my %require =
map { my ($k, $v) = split /\s+/, $_->{requirement}, 2; ($k, $v||'') }
@{ $r->requires };
debug \%require;

....

return Apache2::Const::SERVER_ERROR unless $require{user} eq $users;
return Apache2::Const::SERVER_ERROR unless $require{group} eq $groups;

Since requires effectively wraps ap_requires the %require hash is not
populated & SERVER::ERROR is returned from the handler.

The config section is:

<Location /TestAPI__access2>
PerlAuthenHandler TestAPI::access2
PerlResponseHandler Apache::TestHandler::ok1
SetHandler modperl
<IfModule mod_authz_host.c>
# needed to test $r->satisfies
Allow from All
</IfModule>
AuthType Basic
AuthName "Access"
Require user goo bar
Require group bar tar
<Limit POST>
Require valid-user
</Limit>
Satisfy All
<IfModule mod_auth_basic.c>
# htpasswd -mbc auth-users goo foo
# htpasswd -mb auth-users bar mar
# using md5 password so it'll work on win32 too
AuthUserFile /home/mmsadm/Projects/mod_perl-2.0.3/t/htdocs/api/auth-users
# group: user1 user2 ...
AuthGroupFile /home/mmsadm/Projects/mod_perl-2.0.3/t/htdocs/api/auth-groups
</IfModule>
</Location>

To make the access2 test pass it seems that the obvious thing to do is
populate the %require hash without the '$r->requires'
call. Does anyone know how the information associated with 'Require'
directives can be retrieved
in the latest httpd implementation?

Thanks,

Rolf

Further info:

1. This mail discussion between Steve Hay & Randy Kobes
mentions the removal of ap_requires from httpd:

"Problems building mod_perl-2.0.3 on Win32 with VC8"

2. t/hooks/authz.t & t/hooks/authen_basic.t  fail for the same reason

Reply via email to