Changes for version 1.99_09
- $filter->seen_eos() now accepts 1/0 to set/unset the flag so streaming filters can control the sending of EOS. [Stas]
- support systems where apr header files are installed separately from httpd header files ["Andres Salomon" <dilinger@voxel.net>]
- implement init filter handlers + tests [Stas]
- improving ModPerl::MethodLookup to:
- handle more aliased perl XS functions
- sort the methods map struct so one can use the autogenerated map as is
- add lookup_module, tells which methods are defined by a given module
- add lookup_object, tells which methods can be called on a given object
- provide autoexported wrappers print_method, print_module and print_object for easy deployment from the command line
- Stas
- add Perl glue for functions: APR::Socket::timeout_get APR::Socket::timeout_set [Stas]
- similar to SetEnv, upcase the env keys for PassEnv on platforms with caseless env (e.g. win32) [steve.sparling@ps.ge.com]
- Add a backcompat wrapper for $r->notes (mp2 supports only the APR::Table API) [Stas]
- Add a script mp2bug and a target 'make bugreport', so people can use bugreporting during the build and after modperl is installed. [Stas]
- Add a script mp2doc as a replacement for perldoc (due to 2.0 modules living under Apache2, which won't be looked at by perldoc). [Stas]
- Add a constant APR::PerlIO::PERLIO_LAYERS_ARE_ENABLED and use it in tests [Stas]
- Require perl 5.8 or higher when building mod_perl on OSes requiring ithreads (e.g., win32), since 5.6.x ithreads aren't good. [Stas]
- MP_COMPAT_1X=0 now can be passed to Makefile.PL to disable mp1-back-compat compile-time features + adjust tests. [Stas]
- <SERVER_ROOT> and <SERVER_ROOT>/lib/perl are now added to @INC, just like mod_perl 1.0 with MP_COMPAT_1X=1 (currently enabled by default). [Stas]
- The Perl-5.8.0 crypt() workaround is now used only if 5.8.0 is used, since 5.8.1-tobe/5.9.0-tobe(blead-perl) won't compile with it. [Geoffrey Young]
- new directives PerlSetInputFilter and PerlSetOutputFilter, which are the same as SetInputFilter and SetOutputFilter respectively, but allow to insert non-mod_perl filters before, between or after mod_perl filters. + tests [Stas]
- improved filters debug tracing [Stas]
- implement $filter->remove (filter self-removal) + tests [Stas]
- remove the second-guessing code that was trying to guess the package name to load from the handler configuration (by stripping ::string and trying to load the package). fall back to using explicit PerlModule to load modules whose handler sub name is not called 'handler' + adjust tests. [Stas]
- set the magic taint flags before modules are required [Stas]
- make sure to set base server's mip before any of the PerlRequire/PerlModule directives are called, since they may add add_config(), which in turn runs Perl sections or PerlLoadModule, which may need the scfg->mip to be set. [Stas]
- ModPerl::MM is now ready to be used in Makefile.PL of 3rd party mod_perl modules [Stas and Geoff]
- fix a segfault caused by PerlModule in $s->add_config, due to setting the MP_init_done flag before init was done + add test [Stas]
- adjust the generated Makefile's to properly build on aix (tested on powerpc-ibm-aix5.1.0.0) [Stas]
- the build now automatically glues the .pod files to the respective .pm files, so one can use perldoc on .pm files to read the documentation. [Stas]
- provide a workaround for ExtUtils::MakeMaker::mv_all_methods, so ModPerl::BuildMM and ModPerl::MM can override EU::MM methods behind the scenes. [Stas]
- adding ModPerl::BuildMM, which is now used for building mod_perl. ModPerl::MM will be used for 3rd party modules. ModPerl::BuildMM reuses ModPerl::MM where possible. [Stas]
- drop the glue code for apr_generate_random_bytes, since it's not available on all platforms. [Stas]
- Since non-threaded mpms don't use tipools in mips, don't create and destroy them. [Stas]
- re-use the workaround for glibc/Perl-5.8.0 crypt() bug for the main/vhost base perl interpreters as well. This solves the problem for the buggy glibc on RH8.0. [Stas]
- send_cgi_header now turns the header parsing off and can send any data attached after the response headers as a response body. [Stas]
- move the check that print/printf/puts/write/etc are called in the response phase into the functions themselves so 1) we can print a more useful error message 2) this check is not always needed in modperl_wbucket_write, when called internally, so we save some cycles.
- Stas
- add checks that print/printf/puts/write/etc are called in the response phase. move the check into the functions themselves so we can print a more useful error message [Stas]
- 'make install' now installs mod_perl*h files under httpd's include tree [Stas]
- When PerlOptions +ParseHeaders is an effect, the CGI headers parsing won't be done if any *mod_perl* handler before and including the response phase, sets $r->content_type. (similar behavior to mp1's send_http_header() [Stas]
- Registry: make sure that $r is not in the scope when the script is compiled [Stas]
- $Apache::Server::SaveConfig added. When set to a true value, will not clear the content of Apache::ReadConfig:: once <Perl > sections are processed. [Philippe M. Chiasson <gozer@cpan.org]
- Apache::compat: support 1.0's Apache->push_handlers, Apache->set_handlers and Apache->get_handlers [Stas]
- revamp the code handling output flushing and flush bucket sending. Namelly modperl_wbucket_flush and modperl_wbucket_pass now can be told to send a flush bucket by themselves, attaching it to the data bb they are already sending. This halfs the number of output filter invocations when the response handler flushes output via $| or rflush. adjust tests, which were counting the number of invocations.
- Stas
- move ModPerl::RegistryCooker to use a hash as object (similar to mp1), to make it easier to subclass. [Nathan Byrd <nathan@byrd.net>]
- $r->rflush has to flush internal modperl buffer before calling ap_rflush, so implement rflush, instead of autogenerating the xs code for it. [Stas]
- fix the input filters handling of DECLINED handlers (consume the data, on behalf of the handler) + tests [Stas]
- fix the code that autogenerates modperl_largefiles.h not to define macros matching m/^-/ (was a problem on aix-4.3.3) [Stas]
- $Apache::Server::StrictPerlSections added. When set to a true value, will abort server startup if there are syntax errors in <Perl > sections [Philippe M. Chiasson <gozer@cpan.org]
- Use Win32::GetShortPathName for Win32 to handle cases when the supplied MP_AP_PREFIX contains spaces. [Randy Kobes]
- Bump up ThreadsPerChild for mpm_winnt in httpd.conf, which seems to help avoid server startup problems when running the tests.
- Randy Kobes
- implement a new helper module ModPerl::MethodLookup to help figure out which module should be loaded when a certain method is reported to be missing. [Stas]
- fix a bug for apr < 0.9.3, where it segfaults in apr_uri_unparse, if hostname is set, but not the scheme. In case the hostname is defined but scheme is not Apache::compat will default to the 'http' scheme, whereas APR::URI::unparse provides no default [Stas]
- move $r->send_http_header implementation to Apache::compat. This allows the 1.0 code to run unmodified if $r->send_http_header is called before the response change. we already handle the check whether content_type was set, when deciding whether the headers are to be parsed inside modperl_wbucket_pass(). [Stas]
- fixes to Apache::compat. make $r->connection->auth_type interface with r->ap_auth_type. make both $r->connection->auth_type and $r->connection->user writable. [Geoffrey Young]
- Open up r->ap_auth_type, making it possible to write custom authen handlers that don't rely on Basic authentication or it's associated ap_* functions.
- Geoffrey Young
- add Apache::Bundle2 [Stas]
- Apache::Reload now supports the PerlPreConnectionHandler invocation mode, so connection filter and protocol modules can be automatically reloaded on change. [Stas]
- implement Apache::current_callback + $r->current_callback goes into Apache::compat, since now we have a way too many callbacks unrelated to $r [Stas]
- Add Apache::compat methods: $r->connection->auth_type and $r->connection->user (requires 'PerlOptions +GlobalRequest') + tests
- Stas
- Several issues resolved with parsing headers, including making work the handlers calling $r->content_type() and not sending raw headers, when the headers scanning is turned on. Lots of tests added to exercise different situations. [Stas]
- warn on using -T in ModPerl::Registry scripts when mod_perl is not running with -T [Stas]
- perl 5.7.3+ has a built-in ${^TAINT} to test whether it's running under -(T|t). Backport ${^TAINT} for mod_perl running under 5.6.0-5.7.3, (what used to be $Apache::__T. $Apache::__T is available too, but deprecated. [Stas]
- add PerlChildExitHandler implementation [Stas]
- add PerlCleanupHandler implementation + test [Stas]
- die when Apache->request returns nothing ('PerlOptions -GlobalRequest' or 'SetHandler modperl') [Stas]
- New Apache::Directive methods: as_hash(), lookup() + tests + docs
- Philippe M. Chiasson <gozer@cpan.org>
- Stacked handlers chain execution is now aborted when a handler returns something other than OK or DECLINED [Stas]
- make $filter->read() in input streaming filters, use the same number of arguments as read() in the output filters. [Stas]
- Implement $r->add_input_filter and $r->add_output_filter $c->add_input_filter and $c->add_output_filter and add tests [Stas]
- Skip the handler package::func resolving error, only when the error message matches "Can't locate .*? in @INC", rather than just "Can't locate", since there are many other errors that start with that string. [Stas]
- the top level 'make test' now descends into the ModPerl-Registry dir to run 'make test' there [Stas]
- All response functions are now returning status and the callers check and croak on failure or progate them further. [Stas]
- OPEN, CLOSE and FILENO implementation for Apache::RequestRec [Stas]
- Another fix for the handling of the return status in ModPerl::RegistryCooker: reset the status to the original one only if it was changed by the script, otherwise return the execution status
- Stas
- prevent segfault in $r->print / $filter->print (in output filter) and related functions when they are called before the response phase
- Stas
- prevent segfault in send_http_header when it's called before the response phase [Stas]
- input stream filtering support was added + tests (plus renaming filter tests so we can know from the test name what kind of filter is tested)
- Stas
- Add proper support for mis-behaved feeding filters that send more than one EOS bucket in streaming filters + test. [Stas]
- prevent a segfault when push_handlers are used to push a handler into the currently phase and switching the handler (perl-script/modperl) + tests [Stas]
- Add $filter->seen_eos to the streaming filter api to know when eos has been seen, so special signatures can be passed and any data stored in the context flushed + tests. [Stas]
- Add $filter->ctx to maintain state between filter invocation + tests
- Stas
- Request input and output filters are now getting the EOS bucket, which wasn't passed through before. Now the context can be flushed on EOS. [Stas]
Changes for version 1.99_08
- Correct ModPerl::RegistryCooker to reset %INC, after compile for .pl files which don't declare the package + add tests to check that [Stas]
- Log the real error message when Foo::Bar::sub_name fails to resolve, because of a problem in Foo::Bar, when Foo::Bar *was* found [Stas]
- Add PerlPreConnectionHandler support in Apache::Test [Stas]
- Enable PerlPreConnectionHandler [Stas]
- Support the Host: request header in Apache::TestClient [Stas]
- restore the ModPerl::RegistryLoader::new() method for backwards compatibility [Stas]
- port the support for NameWithVirtualHost in ModPerl::RegistryCooker and ModPerl::RegistryLoader [Stas]
- fix the handling of the return status in ModPerl::RegistryCooker, add a test to verify that [Stas]
- under non-threaded perl need to check whether mod_perl is running, when modperl_vhost_is_running check is done. [Stas]
- fix $r->read to read all the requested amount of data if possible, adjust the test TestApache::read to verify that [Stas]
- fix the method content() in Apache::compat to read a whole request body. same for ModPerl::Test::read_post. add tests. [Stas]
- Adjust the reverse filter test to work on win32 (remove trailing \r)
- Randy Kobes <randy@theoryx5.uwinnipeg.ca>
- Strongly suggest win32 users to upgrade to 5.8.0, if they run 5.6.x
- Randy Kobes <randy@theoryx5.uwinnipeg.ca>
- When installing the mod_perl shared object, first need to check whether the directory 'modules' already exists, and create it if not.
- Randy Kobes <randy@theoryx5.uwinnipeg.ca>
- Add a capability to tune the test configuration sections ordering in Apache::TestConfigPerl [Stas Bekman]
- fix the complaining code about late PerlSwitches when PerlLoadModule is used before it [Stas Bekman]
- add various tests that exercise PerlLoadModule and vhosts
- Stas Bekman
- handle correctly PerlLoadModules (directives) with vhosts:
- handle gracefully cases when things are undef/NULL
- handle the case when scfg==NULL, by stealing the base_servers's config
- handle correctly PerlLoadModules (directives) with vhosts:
- Stas Bekman
- make mod_perl work with vhosts when the server is started prior to post_config():
- call modperl_init_globals as early as possible, because the main server record is needed during the configuration parsing, for perlloadmodule and vhosts
- also make sure that we are using a real base_server, when dealing with modperl_init, and if not retrieve it from the global record
- make mod_perl work with vhosts when the server is started prior to post_config():
- Stas Bekman
- prevent segfaults, when scfg is NULL in Apache::Module->get_config();
- Stas Bekman
- ensure that a core file is a file indeed, before complaining [Philippe M. Chiasson <gozer@cpan.org>]
- add $r->as_string [Geoffrey Young]
- add backcompat vars: $Apache::Server::CWD and $Apache::Server::AddPerlVersion [Stas Bekman]
- env var MOD_PERL_TRACE is working again [Stas Bekman]
- add a new test TestDirective::perlloadmodule2, which performs a more evolved merging. [Stas Bekman]
- fix Apache::TestConfigPerl under mod_perl 1.0, need to require mod_perl.pm before using $mod_perl::VERSION [Geoffrey Young <GYoung@covad.com>]
- add an Apache::SIG backcompat stub to Apache::compat [Stas Bekman]
- fix the Apache::TestConfigPerl's run_apache_test_config() function where test packages are scanned for the magic APACHE_TEST_CONFIGURE and if found get require()'d. Apache2 needs to be run for mod_perl
Documentation
Apache::Test change logfile
An APR Perl IO layer
A Perl API for manipulating opaque string-content table
A Perl API for Apache request object
A Perl API for manipulating Apache configuration tree
A Perl API for Apache 2.0 Filtering
Perl API for Apache Logging Methods
Reload Perl Modules when Changed on Disk
A Perl API for Apache request object
Methods for work with Apache::Request object
Methods for work with Apache::Server object
Embedded interpreter status information
Executing SubProcesses from mod_perl
1.0 backward compatibility functions deprecated in 2.0
A "subclass" of ModPerl::MM used for building mod_perl 2.0
A "subclass" of ExtUtils::MakeMaker for mod_perl 2.0
Map mod_perl 2.0 modules, objects and methods
Run unaltered CGI scripts under mod_perl
Run unaltered CGI scripts persistently under mod_perl
Run unaltered CGI scripts persistently under mod_perl
Cook mod_perl 2.0 Registry Modules
Compile ModPerl::RegistryCooker scripts at server startup
Helper mod_perl 2.0 Functions
Multi-Processing Model Modules
Modules
Test.pm wrapper with helpers for testing Apache
Test Configuration setup module
Special Tests Sequence Failure Finder
Utility functions for writing tests
A bundle to install all Apache-Test related modules
Methods for locating and parsing bits of Apache source code
Install Apache mod_perl2 and related modules
Generate mod_perl glue code
Functions to retrieve mod_perl specific env information.
Provides
in xs/APR/APR/APR.pm
in xs/APR/Const/Const.pm
in xs/APR/PerlIO/PerlIO.pm
in lib/APR/XSLoader.pm
in lib/Apache/compat.pm
in lib/Apache2.pm
in lib/Apache/compat.pm
in xs/Apache/Const/Const.pm
in lib/Apache/compat.pm
in xs/tables/current/Apache/ConstantsTable.pm
in lib/Apache/compat.pm
in xs/tables/current/Apache/FunctionTable.pm
in lib/Apache/ParseSource.pm
in lib/Apache/ParseSource.pm
in lib/Apache/PerlSection.pm
in lib/Apache/Reload.pm
in lib/Apache/compat.pm
in lib/Apache/compat.pm
in lib/Apache/compat.pm
in lib/Apache/SourceTables.pm
in lib/Apache/Status.pm
in xs/tables/current/Apache/StructureTable.pm
in lib/Apache/compat.pm
in Apache-Test/lib/Apache/Test5005compat.pm
in Apache-Test/lib/Apache/TestBuild.pm
in Apache-Test/lib/Apache/TestClient.pm
in Apache-Test/lib/Apache/TestClient.pm
in Apache-Test/lib/Apache/TestCommon.pm
in Apache-Test/lib/Apache/TestCommonPost.pm
in Apache-Test/lib/Apache/TestConfigC.pm
in Apache-Test/lib/Apache/TestConfigParse.pm
in Apache-Test/lib/Apache/TestConfigPerl.pm
in Apache-Test/lib/Apache/TestConfigC.pm
in Apache-Test/lib/Apache/TestHandler.pm
in Apache-Test/lib/Apache/TestHarness.pm
in Apache-Test/lib/Apache/TestMM.pm
in Apache-Test/lib/Apache/TestReport.pm
in Apache-Test/lib/Apache/TestReportPerl.pm
in Apache-Test/lib/Apache/TestRequest.pm
in Apache-Test/lib/Apache/TestRun.pm
in Apache-Test/lib/Apache/TestRunPerl.pm
in Apache-Test/lib/Apache/TestSSLCA.pm
in Apache-Test/lib/Apache/TestServer.pm
in Apache-Test/lib/Apache/TestSmokePerl.pm
in Apache-Test/lib/Apache/TestSort.pm
in Apache-Test/lib/Apache/Test.pm
in Apache-Test/lib/Apache/TestTrace.pm
in lib/Apache/compat.pm
in lib/Apache/XSLoader.pm
in lib/Apache/compat.pm
in Apache-Test/lib/Apache/TestRequest.pm
in lib/ModPerl/BuildMM.pm
in lib/ModPerl/BuildOptions.pm
in xs/ModPerl/Const/Const.pm
in lib/ModPerl/FunctionMap.pm
in xs/tables/current/ModPerl/FunctionTable.pm
in lib/ModPerl/MM.pm
in lib/ModPerl/Manifest.pm
in lib/ModPerl/MapUtil.pm
in lib/ModPerl/MapUtil.pm
in lib/ModPerl/ParseSource.pm
in ModPerl-Registry/lib/ModPerl/PerlRun.pm
in ModPerl-Registry/lib/ModPerl/Registry.pm
in ModPerl-Registry/lib/ModPerl/RegistryBB.pm
in ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
in ModPerl-Registry/lib/ModPerl/RegistryLoader.pm
in lib/ModPerl/StructureMap.pm
in lib/ModPerl/TestRun.pm
in lib/ModPerl/TestRun.pm
in lib/ModPerl/TypeMap.pm
in lib/ModPerl/WrapXS.pm
in lib/mod_perl.pm
in Apache-Test/lib/Apache/Test5005compat.pm