On Wed, 31 Mar 2004 10:09:01 -0800
Stas Bekman <[EMAIL PROTECTED]> wrote:

BTW, I subscribed to the list, so you needn't reply to my address too :)

> But definitely move first to 1.99_13 because we aren't going to debug on 
> 1.99_12 and we need to be on the same page to have a better chance to 
> reproduce the problem.

OK, I tried 1.99_13 with the same results. The build environment is the same as for 
1.99_12 so I guess the same Bug Report Info applies here too (I can generate
another bug report if you need it though)

> We are not aware of this problem, Kiki. You need to give us more matter to be 
> able to understand your problem. You don't have a problem to start the modperl > 
> test suite, do you? 

In fact any attempt to start apache with mod_perl (including the one in the test 
suite) causes a segmentation fault. 

> If that's the case, you need to show us what configuration 
> causes that, coming with a minimal possible case that you can still reproduce 
> the problem with.

1. The command used to start apache is:

[EMAIL PROTECTED] ~/work/mod_perl-1.99_13]$ /usr/local/sbin/httpd -d 
/usr/home/kiki/work/mod_perl-1.99_13/t -f 
/usr/home/kiki/work/mod_perl-1.99_13/t/conf/httpd.conf -D APACHE2 -D PERL_USEITHREADS
Segmentation fault (core dumped)

2. The backtrace for the core file is:
(gdb) backtrace 
#0  0x290ed4f7 in Perl_newSVpvn ()
   from /usr/local/lib/perl5/5.8.2/mach/CORE/libperl.so
#1  0x2913e219 in PerlIO_open ()
   from /usr/local/lib/perl5/5.8.2/mach/CORE/libperl.so
#2  0x29072363 in S_open_script ()
   from /usr/local/lib/perl5/5.8.2/mach/CORE/libperl.so
#3  0x2906f5a2 in S_parse_body ()
   from /usr/local/lib/perl5/5.8.2/mach/CORE/libperl.so
#4  0x2906e994 in perl_parse ()
   from /usr/local/lib/perl5/5.8.2/mach/CORE/libperl.so
#5  0x2902b78c in modperl_startup ()
   from /usr/home/kiki/work/mod_perl-1.99_13/src/modules/perl/mod_perl.so
#6  0x2902b6ec in modperl_startup ()
   from /usr/home/kiki/work/mod_perl-1.99_13/src/modules/perl/mod_perl.so
#7  0x2902bb19 in modperl_run ()
   from /usr/home/kiki/work/mod_perl-1.99_13/src/modules/perl/mod_perl.so
#8  0x29030b69 in modperl_cmd_load_module ()
   from /usr/home/kiki/work/mod_perl-1.99_13/src/modules/perl/mod_perl.so
#9  0x80664ca in invoke_cmd ()
#10 0x8067097 in ap_walk_config_sub ()
#11 0x80690f1 in ap_process_config_tree ()
#12 0x806bfae in main ()
#13 0x805d026 in _start ()
(gdb) 


3. The httpd.conf configuration I've tried is the one generated by the test suite:
(I don't know which modules are optional and which are necessary, so if you could give 
me some hints for a more simple configuration, I will try it)

# WARNING: this file is generated, do not edit
# 01: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestConfig.pm:780
# 02: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestConfig.pm:798
# 03: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestConfig.pm:1355
# 04: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestRun.pm:490
# 05: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestRunPerl.pm:55
# 06: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestRun.pm:700
# 07: /usr/home/kiki/work/mod_perl-1.99_13/Apache-Test/lib/Apache/TestRun.pm:700
# 08: t/TEST:20

<IfModule !mod_access.c>
    LoadModule access_module "/usr/local/libexec/apache2/mod_access.so"
</IfModule>

<IfModule !mod_auth.c>
    LoadModule auth_module "/usr/local/libexec/apache2/mod_auth.so"
</IfModule>

<IfModule !mod_auth_anon.c>
    LoadModule auth_anon_module "/usr/local/libexec/apache2/mod_auth_anon.so"
</IfModule>

<IfModule !mod_auth_dbm.c>
    LoadModule auth_dbm_module "/usr/local/libexec/apache2/mod_auth_dbm.so"
</IfModule>

<IfModule !mod_ext_filter.c>
    LoadModule ext_filter_module "/usr/local/libexec/apache2/mod_ext_filter.so"
</IfModule>

<IfModule !mod_include.c>
    LoadModule include_module "/usr/local/libexec/apache2/mod_include.so"
</IfModule>

<IfModule !mod_deflate.c>
    LoadModule deflate_module "/usr/local/libexec/apache2/mod_deflate.so"
</IfModule>

<IfModule !mod_log_config.c>
    LoadModule log_config_module "/usr/local/libexec/apache2/mod_log_config.so"
</IfModule>

<IfModule !mod_env.c>
    LoadModule env_module "/usr/local/libexec/apache2/mod_env.so"
</IfModule>

<IfModule !mod_mime_magic.c>
    LoadModule mime_magic_module "/usr/local/libexec/apache2/mod_mime_magic.so"
</IfModule>

<IfModule !mod_cern_meta.c>
    LoadModule cern_meta_module "/usr/local/libexec/apache2/mod_cern_meta.so"
</IfModule>

<IfModule !mod_expires.c>
    LoadModule expires_module "/usr/local/libexec/apache2/mod_expires.so"
</IfModule>

<IfModule !mod_headers.c>
    LoadModule headers_module "/usr/local/libexec/apache2/mod_headers.so"
</IfModule>

<IfModule !mod_usertrack.c>
    LoadModule usertrack_module "/usr/local/libexec/apache2/mod_usertrack.so"
</IfModule>

<IfModule !mod_unique_id.c>
    LoadModule unique_id_module "/usr/local/libexec/apache2/mod_unique_id.so"
</IfModule>

<IfModule !mod_setenvif.c>
    LoadModule setenvif_module "/usr/local/libexec/apache2/mod_setenvif.so"
</IfModule>

<IfModule !mod_ssl.c>
    LoadModule ssl_module "/usr/local/libexec/apache2/mod_ssl.so"
</IfModule>

<IfModule !mod_mime.c>
    LoadModule mime_module "/usr/local/libexec/apache2/mod_mime.so"
</IfModule>

<IfModule !mod_status.c>
    LoadModule status_module "/usr/local/libexec/apache2/mod_status.so"
</IfModule>

<IfModule !mod_autoindex.c>
    LoadModule autoindex_module "/usr/local/libexec/apache2/mod_autoindex.so"
</IfModule>

<IfModule !mod_asis.c>
    LoadModule asis_module "/usr/local/libexec/apache2/mod_asis.so"
</IfModule>

<IfModule !mod_info.c>
    LoadModule info_module "/usr/local/libexec/apache2/mod_info.so"
</IfModule>

<IfModule !mod_cgi.c>
    LoadModule cgi_module "/usr/local/libexec/apache2/mod_cgi.so"
</IfModule>

<IfModule !mod_vhost_alias.c>
    LoadModule vhost_alias_module "/usr/local/libexec/apache2/mod_vhost_alias.so"
</IfModule>

<IfModule !mod_negotiation.c>
    LoadModule negotiation_module "/usr/local/libexec/apache2/mod_negotiation.so"
</IfModule>

<IfModule !mod_dir.c>
    LoadModule dir_module "/usr/local/libexec/apache2/mod_dir.so"
</IfModule>

<IfModule !mod_imap.c>
    LoadModule imap_module "/usr/local/libexec/apache2/mod_imap.so"
</IfModule>

<IfModule !mod_actions.c>
    LoadModule actions_module "/usr/local/libexec/apache2/mod_actions.so"
</IfModule>

<IfModule !mod_speling.c>
    LoadModule speling_module "/usr/local/libexec/apache2/mod_speling.so"
</IfModule>

<IfModule !mod_userdir.c>
    LoadModule userdir_module "/usr/local/libexec/apache2/mod_userdir.so"
</IfModule>

<IfModule !mod_alias.c>
    LoadModule alias_module "/usr/local/libexec/apache2/mod_alias.so"
</IfModule>

<IfModule !mod_rewrite.c>
    LoadModule rewrite_module "/usr/local/libexec/apache2/mod_rewrite.so"
</IfModule>

<IfModule !mod_php4.c>
    LoadModule php4_module "/usr/local/libexec/apache2/libphp4.so"
</IfModule>

<IfModule !mod_dav.c>
    LoadModule dav_module "/usr/local/libexec/apache2/mod_dav.so"
</IfModule>

<IfModule !mod_dav_svn.c>
    LoadModule dav_svn_module "/usr/local/libexec/apache2/mod_dav_svn.so"
</IfModule>

<IfModule !mod_authz_svn.c>
    LoadModule authz_svn_module "/usr/local/libexec/apache2/mod_authz_svn.so"
</IfModule>

<IfModule !mod_mime.c>
    LoadModule mime_module "/usr/local/libexec/apache2/mod_mime.so"
</IfModule>


<IfModule !mod_perl.c>
    LoadModule perl_module 
"/usr/home/kiki/work/mod_perl-1.99_13/src/modules/perl/mod_perl.so"
</IfModule>


User    kiki
Group    users
ServerName localhost:8529
Listen     localhost:8529

ServerRoot   "/usr/home/kiki/work/mod_perl-1.99_13/t"
DocumentRoot "/usr/home/kiki/work/mod_perl-1.99_13/t/htdocs"

PidFile     /usr/home/kiki/work/mod_perl-1.99_13/t/logs/httpd.pid
ErrorLog    /usr/home/kiki/work/mod_perl-1.99_13/t/logs/error_log
LogLevel    debug

<IfModule mod_log_config.c>
    TransferLog /usr/home/kiki/work/mod_perl-1.99_13/t/logs/access_log
</IfModule>

ServerAdmin [EMAIL PROTECTED]

#needed for http/1.1 testing
KeepAlive       On

HostnameLookups Off

<Directory />
    Options FollowSymLinks
    AllowOverride None
</Directory>

<IfModule worker.c>
    StartServers         1
    MaxClients           2
    MinSpareThreads      2
    MaxSpareThreads      2
    ThreadsPerChild      2
    MaxRequestsPerChild  0
</IfModule>

<IfModule perchild.c>
    NumServers           1
    StartThreads         2
    MinSpareThreads      2
    MaxSpareThreads      2
    MaxThreadsPerChild   2
    MaxRequestsPerChild  0
</IfModule>

<IfModule prefork.c>
    StartServers         1
    MaxClients           2
    MaxRequestsPerChild  0
</IfModule>

<IfDefine APACHE1>
    StartServers         1
    MaxClients           2
    MaxRequestsPerChild  0
</IfDefine>

<IfModule mpm_winnt.c>
    ThreadsPerChild      20
    MaxRequestsPerChild  0
</IfModule>

<Location /server-info>
    SetHandler server-info
</Location>

<Location /server-status>
    SetHandler server-status
</Location>

<IfModule !mod_alias.c>
    LoadModule alias_module "/usr/local/libexec/apache2/mod_alias.so"
</IfModule>
<IfModule mod_alias.c>
    Alias /getfiles-binary-perl /usr/local/bin/perl5.8.2
    Alias /getfiles-perl-pod /usr/local/lib/perl5/5.8.2/pod
    Alias /getfiles-binary-httpd /usr/local/sbin/httpd
</IfModule>

TypesConfig "/usr/local/etc/apache2/mime.types"
Include "/usr/home/kiki/work/mod_perl-1.99_13/t/conf/extra.conf"
<IfModule mod_perl.c>
    PerlPassEnv APACHE_TEST_TRACE_LEVEL
</IfModule>

<IfModule mod_perl.c>
    PerlSwitches -Mlib=/usr/home/kiki/work/mod_perl-1.99_13/t
</IfModule>

<IfModule mod_perl.c>
    PerlRequire /usr/home/kiki/work/mod_perl-1.99_13/t/conf/modperl_startup.pl
</IfModule>

PerlModule TestAPI::internal_redirect
<Location /TestAPI__internal_redirect_modperl>
    SetHandler modperl
    PerlResponseHandler TestAPI::internal_redirect::modperl
</Location>
<Location /TestAPI__internal_redirect_perl_script>
    SetHandler perl-script
    PerlResponseHandler TestAPI::internal_redirect::perl_script
</Location>

<Location /TestAPI__show>
    SetHandler modperl
    PerlResponseHandler TestAPI::show
</Location>

<Location /TestAPI__access>
    Options None
    Options Indexes FollowSymLinks
    AuthName modperl
    AuthType none
    SetHandler modperl
    PerlResponseHandler TestAPI::access
</Location>

<Location /TestAPI__request_rec>
    PerlOptions +GlobalRequest
    SetHandler modperl
    PerlResponseHandler TestAPI::request_rec
</Location>

<Location /TestAPI__server_util>
    SetHandler modperl
    PerlResponseHandler TestAPI::server_util
</Location>

<Location /TestAPI__server_rec>
    SetHandler modperl
    PerlResponseHandler TestAPI::server_rec
</Location>

<Location /TestAPI__lookup_uri2__myplan>
    SetHandler modperl
    PerlResponseHandler TestAPI::lookup_uri2::myplan
</Location>
<Location /TestAPI__lookup_uri2__ok3>
    SetHandler modperl
    PerlResponseHandler TestAPI::lookup_uri2::ok3
</Location>
<Location /TestAPI__lookup_uri2>
    SetHandler modperl
    PerlResponseHandler TestAPI::lookup_uri2
</Location>

<Location /lookup_uri>
    SetHandler modperl
    PerlResponseHandler Apache::TestHandler::ok1
</Location>
<Location /TestAPI__lookup_uri>
    SetHandler modperl
    PerlResponseHandler TestAPI::lookup_uri
</Location>

<Location /TestAPI__conn_rec>
    SetHandler modperl
    PerlResponseHandler TestAPI::conn_rec
</Location>

PerlModule TestAPI::rflush
<Location /TestAPI__rflush>
    SetHandler perl-script
    PerlResponseHandler TestAPI::rflush::response
    PerlOutputFilterHandler TestAPI::rflush::bracket
</Location>

<Location /TestAPI__response>
    SetHandler modperl
    PerlResponseHandler TestAPI::response
</Location>

<Location /TestAPI__query>
    SetHandler modperl
    PerlResponseHandler TestAPI::query
</Location>

<Location /TestAPI__r_subclass>
    SetHandler perl-script
    PerlOptions -GlobalRequest
    PerlResponseHandler TestAPI::r_subclass
</Location>

<Location /TestAPI__server_const>
    SetHandler modperl
    PerlResponseHandler TestAPI::server_const
</Location>

<Location /TestAPI__uri>
    SetHandler modperl
    PerlResponseHandler TestAPI::uri
</Location>

<Location /TestAPI__aplog>
    SetHandler modperl
    PerlResponseHandler TestAPI::aplog
</Location>

<Location /TestAPI__sendfile>
    SetHandler modperl
    PerlResponseHandler TestAPI::sendfile
</Location>

<Location /TestAPI__rutil>
    SetHandler modperl
    PerlResponseHandler TestAPI::rutil
</Location>

<Location /TestAPI__module>
    SetHandler modperl
    PerlResponseHandler TestAPI::module
</Location>

Alias /slurp/ /usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/api/
<Location /slurp/>
    SetHandler modperl
    PerlResponseHandler TestAPI::slurp_filename
</Location>

<Location /TestModules__cgi2>
    SetHandler modperl
    PerlResponseHandler TestModules::cgi2
</Location>

<Location /TestModules__cgiupload>
    SetHandler perl-script
    PerlOptions +GlobalRequest
    PerlResponseHandler TestModules::cgiupload
</Location>

<Location /TestModules__cgipost2>
    SetHandler modperl
    PerlResponseHandler TestModules::cgipost2
</Location>

<IfModule mod_proxy.c>
    <Proxy http://localhost:8529/*>
        <IfModule mod_access.c>
            Order Deny,Allow
            Deny from all
            Allow from localhost
        </IfModule>
    </Proxy>
    
    PerlModule TestModules::proxy
    PerlTransHandler TestModules::proxy::proxy
    <Location /TestModules__proxy_real>
        SetHandler modperl
        PerlResponseHandler TestModules::proxy::response
    </Location>
</IfModule>

<Location /TestModules__cgiupload2>
    SetHandler modperl
    PerlResponseHandler TestModules::cgiupload2
</Location>

<Location /TestModules__cgipost>
    SetHandler perl-script
    PerlOptions +GlobalRequest
    PerlResponseHandler TestModules::cgipost
</Location>

<Location /TestModules__cgi>
    SetHandler perl-script
    PerlOptions -SetupEnv
    PerlResponseHandler TestModules::cgi
</Location>

# notice that perl-script is used on purpose here - testing whether
# :Apache perlio is reentrant (SetHandler modperl doesn't go through
# :Apache perlio layer)
# it's silly that we have to duplicate the resource, but mod_include
# otherwise thinks we have a recursive call loop
<Location /TestModules__include_subreq_dup>
    PerlSetOutputFilter INCLUDES
    Options +IncludesNoExec
    SetHandler perl-script
    PerlResponseHandler TestModules::include_subreq
</Location>
<Location /TestModules__include_subreq>
    SetHandler perl-script
    PerlSetOutputFilter INCLUDES
    Options +IncludesNoExec
    PerlResponseHandler TestModules::include_subreq
</Location>

<Location /TestModperl__print>
    SetHandler modperl
    PerlResponseHandler TestModperl::print
</Location>

<Location /TestModperl__endav>
    SetHandler perl-script
    PerlResponseHandler TestModperl::endav
</Location>

<Location /TestModperl__print_utf8>
    SetHandler perl-script
    PerlResponseHandler TestModperl::print_utf8
</Location>

<Location /TestModperl__print_utf8_2>
    SetHandler modperl
    PerlResponseHandler TestModperl::print_utf8_2
</Location>

PerlModule TestModperl::cookie
<Location /TestModperl__cookie>
    SetHandler perl-script
    PerlInitHandler Apache::TestHandler::same_interp_fixup
    PerlAccessHandler TestModperl::cookie::access
    PerlResponseHandler TestModperl::cookie
    PerlOptions -SetupEnv
</Location>

<Location /TestModperl__setauth>
    SetHandler modperl
    PerlResponseHandler TestModperl::setauth
</Location>

PerlSetVar TestModperl__request_rec_Key_set_in_Base BaseValue

PerlSetVar TestModperl__server_rec_Key_set_in_Base 1_SetValue
PerlAddVar TestModperl__server_rec_Key_set_in_Base 2_AddValue 3_AddValue
<Location /TestModperl__dir_config>
    PerlSetVar TestModperl__request_rec_ZeroKey 0
    PerlSetVar TestModperl__request_rec_Key0 SetValue0
    PerlSetVar TestModperl__request_rec_Key1 ToBeLost
    PerlSetVar TestModperl__request_rec_Key1 1_SetValue
    PerlAddVar TestModperl__request_rec_Key1 2_AddValue
    PerlAddVar TestModperl__request_rec_Key1 3_AddValue 4_AddValue
    PerlSetVar TestModperl__server_rec_Key_set_in_Base SubSecValue
    SetHandler modperl
    PerlResponseHandler TestModperl::dir_config
</Location>

PerlModule TestModperl::cookie2
<Location /TestModperl__cookie2>
    SetHandler modperl
    PerlInitHandler Apache::TestHandler::same_interp_fixup
    PerlAccessHandler TestModperl::cookie2::access
    PerlResponseHandler TestModperl::cookie2
</Location>

PerlModule TestModperl::current_callback
<Location /TestModperl__current_callback>
    PerlHeaderParserHandler TestModperl::current_callback::headerparser
    PerlFixupHandler TestModperl::current_callback::fixup
    PerlResponseHandler TestModperl::current_callback
    PerlLogHandler TestModperl::current_callback::log
    SetHandler modperl
</Location>

<Location /TestModperl__request_rec_perlio_api>
    SetHandler perl-script
    PerlResponseHandler TestModperl::request_rec_perlio_api
</Location>

<Location /TestModperl__getc>
    SetHandler modperl
    PerlResponseHandler TestModperl::getc
</Location>

<Location /TestModperl__io_nested_with_closed_stds>
    SetHandler perl-script
    PerlResponseHandler TestModperl::io_nested_with_closed_stds
</Location>

PerlModule TestModperl::merge

Listen localhost:8530
<VirtualHost _default_:8530>
    ServerName localhost:8530
    # these should pass through all merges untouched
    PerlPassEnv  APACHE_TEST_HOSTTYPE
    PerlSetEnv   MergeSetEnv1  SetEnv1Val
    PerlSetVar   MergeSetVar1  SetVar1Val
    PerlSetVar   MergeAddVar1  AddVar1Val1
    PerlAddVar   MergeAddVar1  AddVar1Val2
    
    # these are overridden in /merge2 and /merge2/merge3.html
    PerlSetEnv   MergeSetEnv2  SetEnv2Val
    PerlSetVar   MergeSetVar2  SetVar2Val
    PerlSetVar   MergeAddVar2  AddVar2Val1
    PerlAddVar   MergeAddVar2  AddVar2Val2
    
    # these are overridden in /merge2/merge3.html only
    PerlSetEnv   MergeSetEnv3  SetEnv3Val
    PerlSetVar   MergeSetVar3  SetVar3Val
    PerlSetVar   MergeAddVar3  AddVar3Val1
    PerlAddVar   MergeAddVar3  AddVar3Val2
    
    <Location /merge>
        # same as per-server level
        SetHandler perl-script
        PerlResponseHandler TestModperl::merge
    </Location>
    
    AccessFileName htaccess
    <Directory /usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/merge2>
        # overrides "2" values - "1" and "3" values left untouched
        PerlSetEnv   MergeSetEnv2  SetEnv2Merge2Val
        PerlSetVar   MergeSetVar2  SetVar2Merge2Val
        PerlSetVar   MergeAddVar2  AddVar2Merge2Val1
        PerlAddVar   MergeAddVar2  AddVar2Merge2Val2
        
        SetHandler perl-script
        PerlResponseHandler TestModperl::merge
        
        # don't trigger htaccess files automatically
        AllowOverride none
        
        <Files merge3.html>
            # initiate a double merge with htaccess file
            AllowOverride all
        </Files>
    </Directory>
    
</VirtualHost>

<Location /TestModperl__subenv>
    PerlOptions -SetupEnv
    SetHandler modperl
    PerlResponseHandler TestModperl::subenv
</Location>

<Location /TestModperl__methodobj>
    PerlResponseHandler $TestModperl::MethodObj->handler
    SetHandler modperl
</Location>

<Location /TestModperl__method>
    SetHandler modperl
    PerlResponseHandler TestModperl::method
</Location>

<Location /TestModperl__pnotes>
    SetHandler modperl
    PerlResponseHandler TestModperl::pnotes
</Location>

<Location /TestModperl__perl>
    SetHandler modperl
    PerlResponseHandler TestModperl::perl
</Location>

<Location /TestModperl__exit>
    SetHandler modperl
    PerlResponseHandler TestModperl::exit
</Location>

<Location /TestModperl__request_rec_tie_api>
    SetHandler modperl
    PerlResponseHandler TestModperl::request_rec_tie_api
</Location>

<Location /TestModperl__readline>
    SetHandler modperl
    PerlResponseHandler TestModperl::readline
</Location>

PerlModule TestModperl::printf
<Location /TestModperl__printf>
    PerlFixupHandler TestModperl::printf::fixup
    SetHandler modperl
    PerlResponseHandler TestModperl::printf
</Location>

<Location /TestModperl__post_utf8>
    SetHandler perl-script
    PerlResponseHandler TestModperl::post_utf8
</Location>

<Location /TestModperl__env>
    SetHandler perl-script
    PerlResponseHandler TestModperl::env
</Location>

<Location /TestModperl__status>
    SetHandler modperl
    PerlResponseHandler TestModperl::status
</Location>

<Location /TestModperl__sameinterp>
    PerlFixupHandler Apache::TestHandler::same_interp_fixup
    SetHandler modperl
    PerlResponseHandler TestModperl::sameinterp
</Location>

Listen localhost:8531
<VirtualHost _default_:8531>
    ServerName localhost:8531
    PerlOptions -PreConnection -ProcessConnection
    PerlOptions -Autoload -Log -InputFilter -OutputFilter
    PerlOptions +ChildInit +ChildExit
    PerlModule TestModperl::perl_options
    PerlOptions +ParseHeaders
    <Location /TestModperl__perl_options>
        SetHandler modperl
        PerlOptions -GlobalRequest -SetupEnv
        PerlOptions +MergeHandlers
        PerlResponseHandler TestModperl::perl_options
    </Location>
</VirtualHost>

PerlModule TestModperl::io_with_closed_stds
<Location /TestModperl__io_with_closed_stds>
    SetHandler perl-script
    PerlFixupHandler TestModperl::io_with_closed_stds::fixup
    PerlResponseHandler TestModperl::io_with_closed_stds
    PerlCleanupHandler TestModperl::io_with_closed_stds::cleanup
</Location>

<Location /TestModperl__taint>
    SetHandler modperl
    PerlResponseHandler TestModperl::taint
</Location>

<Location /TestModperl__methodname>
    PerlResponseHandler TestModperl::methodname->response
    SetHandler modperl
</Location>

# create a separate virtual host so we can use
# keepalives - a per-connection interpreter is
# the only way to make sure that we can plan in
# one request and test in subsequent tests
Listen localhost:8532
<VirtualHost _default_:8532>
    ServerName localhost:8532
    
    KeepAlive On
    
    <IfDefine PERL_ITHREADS>
        PerlInterpScope connection
    </IfDefine>
    
    PerlModule TestModperl::setupenv
    
    PerlPostReadRequestHandler TestModperl::setupenv::subenv_one
    
    # SetEnv is affected by +SetupEnv
    SetEnv SRV_SETENV server
    
    # PerlSetEnv is not affected by +SetupEnv or -SetupEnv
    # it is entirely separate and always set if configured
    PerlSetEnv SRV_PERLSETENV server
    
    # plan
    <Location /TestModperl__setupenv>
        SetHandler modperl
        PerlResponseHandler TestModperl::setupenv
    </Location>
    
    # default modperl handler
    # %ENV should not contain standard CGI variables
    # or entries from the subprocess_env table
    <Location /TestModperl__setupenv_mpdefault>
        SetHandler modperl
        PerlResponseHandler TestModperl::setupenv::noenv
        
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV mpdefault
        PerlSetEnv DIR_PERLSETENV mpdefault
    </Location>
    
    # modperl handler + SetupEnv
    # %ENV should contain CGI variables as well as
    # anything put into the subprocess_env table
    <Location /TestModperl__setupenv_mpsetup>
        SetHandler modperl
        PerlResponseHandler TestModperl::setupenv::env
        
        PerlOptions +SetupEnv
        
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV mpsetup
        PerlSetEnv DIR_PERLSETENV mpsetup
    </Location>
    
    # $r->subprocess_env in a void context with no args
    # should do the same as +SetupEnv wrt CGI variables
    # and entries already in the subprocess_env table
    # but subprocess_env entries that appear later will
    # not show up in %ENV
    <Location /TestModperl__setupenv_mpvoid>
        SetHandler modperl
        PerlResponseHandler TestModperl::setupenv::someenv
        
        PerlHeaderParserHandler TestModperl::setupenv::subenv_void
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV mpvoid
        PerlSetEnv DIR_PERLSETENV mpvoid
    </Location>
    
    # +SetupEnv should always populate %ENV fully prior
    # to running the content handler (regardless of when
    # $r->subprocess_env() was called) to ensure that
    # %ENV is an accurate representation of the
    # subprocess_env table
    <Location /TestModperl__setupenv_mpsetupvoid>
        SetHandler modperl
        PerlResponseHandler TestModperl::setupenv::env
        
        PerlOptions +SetupEnv
        
        PerlHeaderParserHandler TestModperl::setupenv::subenv_void
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV mpsetupvoid
        PerlSetEnv DIR_PERLSETENV mpsetupvoid
    </Location>
    
    # default perl-script handler is equivalent to +SetupEnv
    # CGI variables and subprocess_env entries will be in %ENV
    <Location /TestModperl__setupenv_psdefault>
        SetHandler perl-script
        PerlResponseHandler TestModperl::setupenv::env
        
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV psdefault
        PerlSetEnv DIR_PERLSETENV psdefault
    </Location>
    
    # -SetupEnv should not put CGI variables or subprocess_env
    # entries in %ENV
    <Location /TestModperl__setupenv_psnosetup>
        SetHandler perl-script
        PerlResponseHandler TestModperl::setupenv::noenv
        
        PerlOptions -SetupEnv
        
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV psnosetup
        PerlSetEnv DIR_PERLSETENV psnosetup
    </Location>
    
    # +SetupEnv should always populate %ENV fully prior
    # to running the content handler (regardless of when
    # $r->subprocess_env() was called) to ensure that
    # %ENV is an accurate representation of the
    # subprocess_env table
    <Location /TestModperl__setupenv_psvoid>
        SetHandler perl-script
        PerlResponseHandler TestModperl::setupenv::env
        
        PerlHeaderParserHandler TestModperl::setupenv::subenv_void
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV psvoid
        PerlSetEnv DIR_PERLSETENV psvoid
    </Location>
    
    # equivalent to modperl handler with $r->subprocess_env() - 
    # CGI variables are there, but not subprocess_env entries
    # that are populated after the void call
    <Location /TestModperl__setupenv_psnosetupvoid>
        SetHandler perl-script
        PerlResponseHandler TestModperl::setupenv::someenv
        
        PerlOptions -SetupEnv
        
        PerlHeaderParserHandler TestModperl::setupenv::subenv_void
        PerlFixupHandler TestModperl::setupenv::subenv_two
        
        SetEnv DIR_SETENV psnosetupvoid
        PerlSetEnv DIR_PERLSETENV psnosetupvoid
    </Location>
</VirtualHost>

<Location /TestDirective__pod>
    SetHandler modperl
    PerlResponseHandler TestDirective::pod
</Location>

<Location /TestDirective__perldo>
    SetHandler modperl
    PerlResponseHandler TestDirective::perldo
</Location>

<Location /TestDirective__setupenv>
    PerlOptions +SetupEnv
    SetHandler modperl
    PerlResponseHandler TestDirective::setupenv
</Location>

# SetupEnv ought to have no effect on PerlSetEnv or PerlPassEnv
# per-server entry overwritten by per-directory entry
PerlSetEnv TestDirective__env_srv1 env_srv1

# per-server entry not overwritten
PerlSetEnv TestDirective__env_srv2 env_srv2

# PerlPassEnv is only per-server
PerlPassEnv APACHE_TEST_HOSTNAME
# per-directory entry overwrites per-server
# PerlSetEnv resets the table for each directive
<Location /TestDirective__env>
    PerlOptions -SetupEnv
    PerlSetEnv TestDirective__env_srv1 env_dir1
    PerlSetEnv TestDirective__env_dir2 ToBeLost
    PerlSetEnv TestDirective__env_dir2 env_dir2
    SetHandler modperl
    PerlResponseHandler TestDirective::env
</Location>

<Location /TestAPR__brigade>
    SetHandler modperl
    PerlResponseHandler TestAPR::brigade
</Location>

<Location /TestAPR__util>
    SetHandler modperl
    PerlResponseHandler TestAPR::util
</Location>

<Location /TestAPR__finfo>
    SetHandler modperl
    PerlResponseHandler TestAPR::finfo
</Location>

<Location /TestAPR__netlib>
    SetHandler modperl
    PerlResponseHandler TestAPR::netlib
</Location>

<Location /TestAPR__pool>
    SetHandler modperl
    PerlResponseHandler TestAPR::pool
</Location>

<Location /TestAPR__uuid>
    SetHandler modperl
    PerlResponseHandler TestAPR::uuid
</Location>

<Location /TestAPR__string>
    SetHandler modperl
    PerlResponseHandler TestAPR::string
</Location>

<Location /TestAPR__table>
    SetHandler modperl
    PerlResponseHandler TestAPR::table
</Location>

<Location /TestAPR__socket>
    SetHandler modperl
    PerlResponseHandler TestAPR::socket
</Location>

<Location /TestAPR__flatten>
    SetHandler modperl
    PerlResponseHandler TestAPR::flatten
</Location>

<Location /TestAPR__os>
    SetHandler modperl
    PerlResponseHandler TestAPR::os
</Location>

<Location /TestAPR__perlio>
    SetHandler modperl
    PerlResponseHandler TestAPR::perlio
</Location>

<Location /TestAPR__threadmutex>
    SetHandler modperl
    PerlResponseHandler TestAPR::threadmutex
</Location>

<Location /TestAPR__date>
    SetHandler modperl
    PerlResponseHandler TestAPR::date
</Location>

<Location /TestAPR__base64>
    SetHandler modperl
    PerlResponseHandler TestAPR::base64
</Location>

# this should work regardless whether parse headers is on or off
<Location /TestApache__send_cgi_header>
    PerlOptions -ParseHeaders
    SetHandler modperl
    PerlResponseHandler TestApache::send_cgi_header
</Location>

<Location /TestApache__subprocess>
    SetHandler modperl
    PerlResponseHandler TestApache::subprocess
</Location>

<Location /TestApache__write>
    SetHandler modperl
    PerlResponseHandler TestApache::write
</Location>

<Location /TestApache__scanhdrs2>
    SetHandler perl-script
    PerlOptions +ParseHeaders
    PerlResponseHandler TestApache::scanhdrs2
</Location>

<Location /TestApache__post>
    SetHandler modperl
    PerlResponseHandler TestApache::post
</Location>

<Location /TestApache__read>
    SetHandler modperl
    PerlResponseHandler TestApache::read
</Location>

<Location /TestApache__conftree>
    SetHandler modperl
    PerlResponseHandler TestApache::conftree
</Location>

<Location /TestApache__discard_rbody>
    SetHandler modperl
    PerlResponseHandler TestApache::discard_rbody
</Location>

<Location /TestApache__scanhdrs>
    SetHandler perl-script
    PerlOptions +ParseHeaders
    PerlResponseHandler TestApache::scanhdrs
</Location>

<Location /TestApache__util>
    SetHandler modperl
    PerlResponseHandler TestApache::util
</Location>

<IfDefine PERL_ITHREADS>
    PerlInterpScope handler
</Ifdefine>
<Location /TestApache__cgihandler>
    SetHandler perl-script
    PerlResponseHandler TestApache::cgihandler
</Location>

<Location /TestError__runtime>
    SetHandler modperl
    PerlResponseHandler TestError::runtime
</Location>

<Location /TestError__syntax>
    SetHandler modperl
    PerlResponseHandler TestError::syntax
</Location>

<Location /TestError__api>
    PerlOptions -GlobalRequest
    SetHandler modperl
    PerlResponseHandler TestError::api
</Location>

<Location /TestCompat__request_body>
    PerlOptions +GlobalRequest
    SetHandler modperl
    PerlResponseHandler TestCompat::request_body
</Location>

<Location /TestCompat__apache_file>
    PerlOptions +GlobalRequest
    SetHandler modperl
    PerlResponseHandler TestCompat::apache_file
</Location>

<Location /TestCompat__apache_util>
    PerlOptions +GlobalRequest
    SetHandler modperl
    PerlResponseHandler TestCompat::apache_util
</Location>

<Location /TestCompat__conn_authen>
    require valid-user
    AuthType Basic
    AuthName simple
    SetHandler modperl
    PerlOptions +GlobalRequest
    PerlAuthenHandler TestCompat::conn_authen
    PerlResponseHandler Apache::TestHandler::ok1
</Location>

<Location /TestCompat__request>
    SetHandler modperl
    PerlResponseHandler TestCompat::request
</Location>

<Location /TestCompat__apache_uri>
    SetHandler modperl
    PerlResponseHandler TestCompat::apache_uri
</Location>

<Location /TestCompat__send_fd>
    SetHandler modperl
    PerlResponseHandler TestCompat::send_fd
</Location>

<Location /TestCompat__apache_table>
    SetHandler modperl
    PerlResponseHandler TestCompat::apache_table
</Location>

<Location /TestCompat__conn_rec>
    SetHandler modperl
    PerlResponseHandler TestCompat::conn_rec
</Location>

# so we can test whether send_httpd_header() works fine
<Location /TestCompat__apache>
    PerlOptions +ParseHeaders
    SetHandler modperl
    PerlResponseHandler TestCompat::apache
</Location>

Listen localhost:8533
<VirtualHost _default_:8533>
    ServerName localhost:8533
    DocumentRoot /usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/vhost
    
    <IfDefine PERL_USEITHREADS>
        # a new interpreter pool
        PerlOptions +Parent
    </IfDefine>
    
    # use test system's @INC
    PerlSwitches -I/usr/home/kiki/work/mod_perl-1.99_13/t
    
    # mp2 modules
    PerlRequire "/usr/home/kiki/work/mod_perl-1.99_13/t/conf/modperl_inc.pl"
    
    # private to this vhost stuff
    PerlRequire "/usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/vhost/startup.pl"
    
    # <Location /TestVhost__config> container is added via add_config
    # in t/htdocs/vhost/startup.pl
</VirtualHost>

PerlModule TestPerl::hash_attack
# call twice to verify an access to the same hash value after the rehash
<Location /TestPerl__hash_attack>
    PerlInitHandler TestPerl::hash_attack::init
    PerlFixupHandler TestPerl::hash_attack::fixup TestPerl::hash_attack::fixup
    SetHandler modperl
    PerlResponseHandler TestPerl::hash_attack
</Location>

<Location /TestPerl__api>
    SetHandler modperl
    PerlResponseHandler TestPerl::api
</Location>

Listen localhost:8534
<VirtualHost _default_:8534>
    PerlProcessConnectionHandler TestProtocol::echo_filter
</VirtualHost>

Listen localhost:8535
<VirtualHost _default_:8535>
    PerlProcessConnectionHandler TestProtocol::echo
</VirtualHost>

Listen localhost:8536
<VirtualHost _default_:8536>
    ServerName localhost:8536
    PerlPreConnectionHandler TestPreConnection::note
    
    <Location /TestPreConnection__note>
        SetHandler modperl
        PerlResponseHandler TestPreConnection::note::response
    </Location>
</VirtualHost>

<Location /TestHooks__set_handlers>
    PerlHeaderParserHandler TestHooks::set_handlers
</Location>

<Location /TestHooks__cleanup2>
    SetHandler modperl
    PerlResponseHandler TestHooks::cleanup2
</Location>

PerlModule      TestHooks::init
PerlInitHandler TestHooks::init::first
<Location /TestHooks__init>
    PerlInitHandler TestHooks::init::second
    PerlResponseHandler TestHooks::init
    PerlResponseHandler TestHooks::init::response
    SetHandler modperl
</Location>

PerlModule TestHooks::access
<Location /TestHooks__access>
    PerlAccessHandler   TestHooks::access
    PerlInitHandler     TestHooks::access::init
    PerlFixupHandler    TestHooks::access::fixup
    PerlResponseHandler Apache::TestHandler::ok1
    SetHandler modperl
</Location>
#<Location />
#    PerlAccessHandler TestHooks::access
#</Location>

<Location /TestHooks__fixup>
    PerlResponseHandler TestHooks::fixup::response
    SetHandler modperl
    PerlFixupHandler TestHooks::fixup
</Location>

<Location /TestHooks__push_handlers>
    SetHandler modperl
    PerlHeaderParserHandler TestHooks::push_handlers
    PerlResponseHandler     TestHooks::push_handlers::conf
    PerlResponseHandler     TestHooks::push_handlers::conf1 
TestHooks::push_handlers::conf2
</Location>

PerlTransHandler TestHooks::trans
<Location /TestHooks__trans>
    PerlResponseHandler Apache::TestHandler::ok1
    SetHandler modperl
</Location>

<Location /TestHooks__cleanup>
    SetHandler modperl
    PerlCleanupHandler  TestHooks::cleanup::cleanup1
    PerlResponseHandler TestHooks::cleanup
</Location>

<Location /TestHooks__stacked_handlers>
    SetHandler modperl
    PerlHeaderParserHandler TestHooks::stacked_handlers
</Location>

# create a new virtual host so we can test (almost all) all the hooks
Listen localhost:8537
<VirtualHost _default_:8537>
    ServerName localhost:8537
    
    PerlModule TestHooks::stacked_handlers2
    
    # all 2 run
    PerlPostReadRequestHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::ok
    
    # 1 run, 1 left behind
    PerlTransHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::server_error
    
    # 1 run, 1 left behind
    PerlMapToStorageHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::server_error
    
    <Location /TestHooks__stacked_handlers2>
        # all 4 run
        PerlHeaderParserHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::declined
        PerlHeaderParserHandler TestHooks::stacked_handlers2::declined 
TestHooks::stacked_handlers2::ok
        
        # all 2 run
        PerlAccessHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::ok 
        
        # 2 run, 1 left behind
        PerlAuthenHandler TestHooks::stacked_handlers2::declined 
TestHooks::stacked_handlers2::ok 
        PerlAuthenHandler TestHooks::stacked_handlers2::auth_required
        
        # 2 run, 1 left behind
        PerlAuthzHandler TestHooks::stacked_handlers2::declined 
TestHooks::stacked_handlers2::ok 
        PerlAuthzHandler TestHooks::stacked_handlers2::auth_required
        
        # 1 run, 1 left behind
        PerlTypeHandler  TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers3::server_error
        
        # all 2 run
        PerlFixupHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::ok
        
        # 2 run, 2 left behind
        PerlResponseHandler TestHooks::stacked_handlers2::declined 
TestHooks::stacked_handlers2 
        PerlResponseHandler TestHooks::stacked_handlers2::ok 
TestHooks::stacked_handlers2::server_error
        
        SetHandler modperl
        AuthType Basic
        Require valid-user
        
        PerlOutputFilterHandler TestHooks::stacked_handlers2::passthru 
TestHooks::stacked_handlers2::filter
    </Location>
    
</VirtualHost>

<Location /TestHooks__headerparser>
    PerlOptions +SetupEnv
    PerlResponseHandler TestHooks::headerparser::response
    SetHandler modperl
    PerlHeaderparserHandler TestHooks::headerparser
</Location>

PerlModule TestHooks::authz
<Location /TestHooks__authz>
    require user dougm
    AuthType Basic
    AuthName simple
    PerlAuthenHandler TestHooks::authz::auth_any
    PerlResponseHandler Apache::TestHandler::ok1
    SetHandler modperl
    PerlAuthzHandler TestHooks::authz
</Location>

Listen localhost:8538
<VirtualHost _default_:8538>
    ServerName localhost:8538
    PerlSetVar PostConfig VHost
    PerlModule TestHooks::startup
    PerlPostConfigHandler TestHooks::startup::post_config
    PerlOpenLogsHandler   TestHooks::startup::open_logs
    <Location /TestHooks__startup>
        SetHandler modperl
        PerlResponseHandler TestHooks::startup
    </Location>
</VirtualHost>
PerlSetVar PostConfig Main
PerlModule TestHooks::startup
PerlPostConfigHandler TestHooks::startup::post_config
PerlOpenLogsHandler   TestHooks::startup::open_logs
<Location /TestHooks__startup>
    SetHandler modperl
    PerlResponseHandler TestHooks::startup
</Location>

<Location /TestHooks__push_handlers_same_phase>
    SetHandler modperl
    PerlResponseHandler TestHooks::push_handlers_same_phase
</Location>

<Location /TestHooks__push_handlers_blessed>
    SetHandler modperl
    PerlResponseHandler TestHooks::push_handlers_blessed
</Location>

<Location /TestHooks__authen>
    require valid-user
    AuthType Basic
    AuthName simple
    PerlResponseHandler Apache::TestHandler::ok1
    SetHandler modperl
    PerlAuthenHandler TestHooks::authen
</Location>

PerlModule TestFilter::in_error
<Location /TestFilter__in_error>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_error::response
    PerlInputFilterHandler TestFilter::in_error
</Location>

PerlModule TestFilter::out_init_basic
<Location /TestFilter__out_init_basic>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_init_basic::response
    PerlOutputFilterHandler TestFilter::out_init_basic::transparent
</Location>

Listen localhost:8539
<VirtualHost _default_:8539>
    ServerName localhost:8539
    PerlModule TestFilter::in_bbs_inject_header
    PerlInputFilterHandler TestFilter::in_bbs_inject_header
    <Location /TestFilter__in_bbs_inject_header>
        SetHandler modperl
        PerlResponseHandler TestFilter::in_bbs_inject_header::response
    </Location>
</VirtualHost>

PerlModule TestFilter::out_str_remove
<Location /TestFilter__out_str_remove>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_remove::response
    PerlOutputFilterHandler TestFilter::out_str_remove::insert_underscores
    PerlOutputFilterHandler TestFilter::out_str_remove::upcase_n_remove
</Location>

PerlModule TestFilter::out_str_subreq_modperl
<Location /modperl_subrequest>
    SetHandler modperl
    PerlResponseHandler   TestFilter::out_str_subreq_modperl::subrequest
</Location>
<Location /TestFilter__out_str_subreq_modperl>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_subreq_modperl::response
    PerlOutputFilterHandler TestFilter::out_str_subreq_modperl::include
</Location>

PerlModule TestFilter::out_str_declined
<Location /TestFilter__out_str_declined>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_declined::response
    PerlOutputFilterHandler TestFilter::out_str_declined::decline
    PerlOutputFilterHandler TestFilter::out_str_declined::black_hole
</Location>

PerlModule TestFilter::in_bbs_underrun
#PerlInputFilterHandler ModPerl::TestFilterDebug::snoop_request
<Location /TestFilter__in_bbs_underrun>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_bbs_underrun::response
    PerlInputFilterHandler TestFilter::in_bbs_underrun::handler
</Location>

PerlModule TestFilter::out_str_subreq_default
Alias /default_subrequest /usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/filter
<Location /default_subrequest>
    SetHandler default-handler
</Location>
<Location /TestFilter__out_str_subreq_default>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_subreq_default::response
    PerlOutputFilterHandler TestFilter::out_str_subreq_default::include
</Location>

PerlModule TestFilter::out_str_req_eos
<Location /TestFilter__out_str_req_eos>
    SetHandler modperl
    PerlResponseHandler     TestFilter::out_str_req_eos
    PerlOutputFilterHandler TestFilter::out_str_req_eos::add_prefix
    PerlOutputFilterHandler TestFilter::out_str_req_eos::add_suffix
</Location>

PerlModule TestFilter::out_bbs_ctx
<Location /TestFilter__out_bbs_ctx>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_bbs_ctx::response
    PerlOutputFilterHandler TestFilter::out_bbs_ctx
</Location>

PerlModule TestFilter::out_str_api
<Location /TestFilter__out_str_api>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_api::response
    PerlOutputFilterHandler TestFilter::out_str_api
</Location>

PerlModule TestFilter::in_bbs_body
<Location /TestFilter__in_bbs_body>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_bbs_body::response
    PerlInputFilterHandler TestFilter::in_bbs_body
</Location>

PerlModule TestFilter::in_str_consume
#PerlInputFilterHandler  ModPerl::TestFilterDebug::snoop_request
#PerlInputFilterHandler  ModPerl::TestFilterDebug::snoop_request
<Location /TestFilter__in_str_consume>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_str_consume::response
    PerlInputFilterHandler TestFilter::in_str_consume::handler
</Location>

PerlModule TestFilter::out_str_reverse
<LocationMatch "/filter/reverse.txt">
    PerlOutputFilterHandler TestFilter::out_str_reverse
</LocationMatch>
<Location /TestFilter__out_str_reverse>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_reverse::response
    PerlOutputFilterHandler TestFilter::out_str_reverse
</Location>

PerlModule TestFilter::out_str_ctx
<Location /TestFilter__out_str_ctx>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_str_ctx::response
    PerlOutputFilterHandler TestFilter::out_str_ctx
</Location>

PerlModule TestFilter::in_str_sandwich
<Location /TestFilter__in_str_sandwich>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_str_sandwich::response
    PerlInputFilterHandler TestFilter::in_str_sandwich
</Location>

PerlModule TestFilter::in_init_basic
<Location /TestFilter__in_init_basic>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_init_basic::response
    PerlInputFilterHandler TestFilter::in_init_basic::suicide
    PerlInputFilterHandler TestFilter::in_init_basic::transparent
</Location>

PerlModule TestFilter::out_str_req_mix
<Location /TestFilter__out_str_req_mix>
    Options +Includes
    PerlOutputFilterHandler TestFilter::out_str_req_mix::adjust
    PerlSetOutputFilter INCLUDES
    PerlOutputFilterHandler TestFilter::out_str_req_mix::adjust
    SetHandler modperl
    PerlResponseHandler     TestFilter::out_str_req_mix
</Location>

PerlModule TestFilter::out_bbs_basic
<Location /TestFilter__out_bbs_basic>
    SetHandler modperl
    PerlResponseHandler TestFilter::out_bbs_basic::response
    PerlOutputFilterHandler TestFilter::out_bbs_basic
</Location>

PerlModule TestFilter::in_str_lc
<Location /TestFilter__in_str_lc>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_str_lc::response
    PerlInputFilterHandler TestFilter::in_str_lc
</Location>

PerlModule TestFilter::both_str_req_mix
<Location /TestFilter__both_str_req_mix>
    Options +Includes
    
    # DEFLATE has a higher priority (AP_FTYPE_CONTENT_SET=20) than
    # mod_perl request filters (AP_FTYPE_RESOURCE=10), so it's going
    # to filter input first no matter how we insert other mod_perl
    # filters. (mod_perl connection filter handlers have an even
    # higher priority (AP_FTYPE_PROTOCOL = 30), see
    # include/util_filter.h for those definitions).
    #
    # PerlSetInputFilter is only useful for preserving the
    # insertion order of filters with the same priority
    SetInputFilter     DEFLATE
    #PerlInputFilterHandler ModPerl::TestFilterDebug::snoop_request
    PerlInputFilterHandler TestFilter::both_str_req_mix::in_adjust
    PerlInputFilterHandler TestFilter::both_str_req_mix::transparent
    
    # here INCLUDES and adjust are both of the same priority
    # (AP_FTYPE_RESOURCE), so PerlSetOutputFilter
    PerlOutputFilterHandler TestFilter::both_str_req_mix::out_adjust_before_ssi
    PerlSetOutputFilter INCLUDES
    PerlOutputFilterHandler TestFilter::both_str_req_mix::out_adjust_after_ssi
    #PerlOutputFilterHandler ModPerl::TestFilterDebug::snoop_request
    PerlSetOutputFilter DEFLATE
    
    SetHandler modperl
    PerlResponseHandler     TestFilter::both_str_req_mix
</Location>

<Location /TestFilter__in_autoload>
    SetHandler modperl
    PerlResponseHandler    ModPerl::Test::pass_through_response_handler
    # no PerlModule TestFilter::in_load on purpose
    PerlInputFilterHandler TestFilter::in_autoload
</Location>

Listen localhost:8540
<VirtualHost _default_:8540>
    ServerName localhost:8540
    PerlModule TestFilter::in_str_msg
    PerlInputFilterHandler TestFilter::in_str_msg
    
    <Location /TestFilter__in_str_msg>
        SetHandler modperl
        PerlResponseHandler TestFilter::in_str_msg::response
    </Location>
    
</Virtualhost>
<Location /TestFilter__in_str_msg>
    PerlInputFilterHandler TestFilter::in_str_msg
</Location>

PerlModule TestFilter::both_str_req_add
<Location /TestFilter__both_str_req_add>
    SetHandler modperl
    PerlHeaderParserHandler TestFilter::both_str_req_add::header_parser
    PerlResponseHandler     TestFilter::both_str_req_add
</Location>

Listen localhost:8541
<VirtualHost _default_:8541>
    ServerName localhost:8541
    PerlModule                   TestFilter::both_str_con_add
    PerlPreConnectionHandler     TestFilter::both_str_con_add::pre_connection
    PerlProcessConnectionHandler TestFilter::both_str_con_add
</VirtualHost>

<IfModule mod_proxy.c>
    <Proxy http://localhost:8529/*>
        <IfModule mod_access.c>
            Order Deny,Allow
            Deny from all
            Allow from localhost
        </IfModule>
    </Proxy>
    
    ProxyRequests Off
    RewriteEngine On
    
    ProxyPass    /TestFilter__both_str_req_proxy/ \
    http://localhost:8529/TestFilter__both_str_req_proxy_content/
    ProxyPassReverse /TestFilter__both_str_req_proxy/ \
    http://localhost:8529/TestFilter__both_str_req_proxy_content/
</IfModule>

PerlModule TestFilter::both_str_req_proxy
<Location /TestFilter__both_str_req_proxy>
    PerlInputFilterHandler  TestFilter::both_str_req_proxy::in_filter
    PerlOutputFilterHandler TestFilter::both_str_req_proxy::out_filter
</Location>
<Location /TestFilter__both_str_req_proxy_content>
    SetHandler modperl
    PerlResponseHandler     TestFilter::both_str_req_proxy
</Location>

Listen localhost:8542
<VirtualHost _default_:8542>
    ServerName localhost:8542
    PerlModule TestFilter::in_bbs_msg
    PerlInputFilterHandler TestFilter::in_bbs_msg
    
    <Location /TestFilter__in_bbs_msg>
        SetHandler modperl
        PerlResponseHandler TestFilter::in_bbs_msg::response
    </Location>
    
</VirtualHost>

PerlModule TestFilter::in_bbs_consume
<Location /TestFilter__in_bbs_consume>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_bbs_consume::response
    PerlInputFilterHandler TestFilter::in_bbs_consume
</Location>

<Location /top_dir>
    PerlOutputFilterHandler TestFilter::out_str_lc
</Location>
Alias /top_dir /usr/home/kiki/work/mod_perl-1.99_13
<Location /TestFilter__out_str_lc>
    PerlOutputFilterHandler TestFilter::out_str_lc
</Location>

PerlModule TestFilter::in_str_declined
<Location /TestFilter__in_str_declined>
    SetHandler modperl
    PerlResponseHandler TestFilter::in_str_declined::response
    PerlInputFilterHandler TestFilter::in_str_declined
</Location>

# APACHE_TEST_CONFIG_ORDER 940
PerlSwitches 
-I/usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/testdirective/perlmodule-vh
Listen localhost:8543
<VirtualHost _default_:8543>
    ServerName localhost:8543
    PerlModule ApacheTest::PerlModuleTest
    
    <Location /TestDirective__perlmodule>
        SetHandler modperl
        PerlResponseHandler TestDirective::perlmodule
    </Location>
    
</Virtualhost>
<Location /TestDirective__perlmodule>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlmodule
</Location>

# APACHE_TEST_CONFIG_ORDER 940
PerlSwitches -I/usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/testdirective/main
PerlRequire "ApacheTest/PerlRequireTest.pm"
Listen localhost:8544
<VirtualHost _default_:8544>
    ServerName localhost:8544
    
    <IfDefine PERL_USEITHREADS>
        # a new interpreter pool
        PerlOptions +Parent
    </IfDefine>
    
    # use test system's @INC
    PerlSwitches -I/usr/home/kiki/work/mod_perl-1.99_13/t
    PerlRequire "conf/modperl_inc.pl"
    PerlModule Apache2
    
    PerlSwitches -I/usr/home/kiki/work/mod_perl-1.99_13/t/htdocs/testdirective/vh
    PerlRequire "ApacheTest/PerlRequireTest.pm"
    
    <Location /TestDirective__perlrequire>
        SetHandler modperl
        PerlResponseHandler TestDirective::perlrequire
    </Location>
    
</Virtualhost>
<Location /TestDirective__perlrequire>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlrequire
</Location>

# APACHE_TEST_CONFIG_ORDER 941
Listen localhost:8545
<VirtualHost _default_:8545>
    ServerName localhost:8545
    
    <IfDefine PERL_USEITHREADS>
        # a new interpreter pool
        PerlOptions +Parent
    </IfDefine>
    
    # use test system's @INC
    PerlSwitches -I/usr/home/kiki/work/mod_perl-1.99_13/t
    PerlRequire "conf/modperl_inc.pl"
    PerlModule Apache2
    
    <Location /TestPerl__ithreads>
        SetHandler modperl
        PerlResponseHandler TestPerl::ithreads
    </Location>
    
</Virtualhost>
<Location /TestPerl__ithreads>
    SetHandler modperl
    PerlResponseHandler TestPerl::ithreads
</Location>

# APACHE_TEST_CONFIG_ORDER 950
PerlLoadModule TestDirective::perlloadmodule4
Listen localhost:8546
<VirtualHost _default_:8546>
    ServerName localhost:8546
    # here perlloadmodule sets scfg on behalf of the base server
    MyTest4 "Vhost"
    <Location /TestDirective__perlloadmodule4>
        MyTest4 "Dir"
        SetHandler modperl
        PerlResponseHandler TestDirective::perlloadmodule4
    </Location>
</Virtualhost>
<Location /TestDirective__perlloadmodule4>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlloadmodule4
</Location>

# APACHE_TEST_CONFIG_ORDER 950
PerlLoadModule TestDirective::perlloadmodule2

MyMergeTest one two
<Location /TestDirective__perlloadmodule2>
    MyMergeTest three four
</Location>
<Location /TestDirective__perlloadmodule2/subdir>
    MyMergeTest five
    MyMergeTest six
</Location>
<Location /TestDirective__perlloadmodule2>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlloadmodule2
</Location>

# APACHE_TEST_CONFIG_ORDER 950
PerlLoadModule TestDirective::perlloadmodule

MyTest one two
ServerTest per-server
<Location /TestDirective__perlloadmodule>
    MyOtherTest value
    SetHandler modperl
    PerlResponseHandler TestDirective::perlloadmodule
</Location>

# APACHE_TEST_CONFIG_ORDER 950
PerlLoadModule TestDirective::perlloadmodule5
Listen localhost:8547
<VirtualHost _default_:8547>
    ServerName localhost:8547
    # here mod_perl sets the scfg by itself for this vhost
    PerlModule File::Spec
    MyTest5 "Vhost"
    <Location /TestDirective__perlloadmodule5>
        MyTest5 "Dir"
        SetHandler modperl
        PerlResponseHandler TestDirective::perlloadmodule5
    </Location>
</Virtualhost>
<Location /TestDirective__perlloadmodule5>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlloadmodule5
</Location>

# APACHE_TEST_CONFIG_ORDER 950
PerlLoadModule TestDirective::perlloadmodule3
MyPlus 5
MyList     "MainServer"
MyAppend   "MainServer"
MyOverride "MainServer"
Listen localhost:8548
<VirtualHost _default_:8548>
    ServerName localhost:8548
    MyPlus 2
    MyList     "VHost"
    MyAppend   "VHost"
    MyOverride "VHost"
    <Location /TestDirective__perlloadmodule3>
        MyPlus 3
        MyList     "Dir"
        MyAppend   "Dir"
        MyOverride "Dir"
        SetHandler modperl
        PerlResponseHandler TestDirective::perlloadmodule3
    </Location>
    <Location /TestDirective__perlloadmodule3/subdir>
        MyPlus 1
        MyList     "SubDir"
        MyAppend   "SubDir"
        MyOverride "SubDir"
    </Location>
</Virtualhost>
<Location /TestDirective__perlloadmodule3>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlloadmodule3
</Location>

# XXX: we want to have this configuration section to come first
# amongst other perlloadmodule tests (<950), so we can test how
# mod_perl starts from vhost. but currently we can't because
# PerlSwitches from other tests are ignored, so the test suite fails
# to startup.
#
# tmp solution: ensure that it's configured *after* all other
# perlloadmodule tests
#
# APACHE_TEST_CONFIG_ORDER 951
Listen localhost:8549
<VirtualHost _default_:8549>
    ServerName localhost:8549
    PerlLoadModule TestDirective::perlloadmodule6
    MyTest6 "Vhost"
    <Location /TestDirective__perlloadmodule6>
        MyTest6 "Dir"
        SetHandler modperl
        PerlResponseHandler TestDirective::perlloadmodule6
    </Location>
</Virtualhost>
<Location /TestDirective__perlloadmodule6>
    SetHandler modperl
    PerlResponseHandler TestDirective::perlloadmodule6
</Location>


Include "/usr/home/kiki/work/mod_perl-1.99_13/t/conf/extra.last.conf"

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to