The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Changes - Apache mod_perl change logfile

CHANGES

all changes without author attribution are by Doug MacEachern

Also refer to the Apache::Test changes log file, at Apache-Test/Changes

1.99_09 - April 28, 2003

$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]

1.99_08 - January 10, 2003

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 [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 [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 2.0. [Stas Bekman]

move the custom mod_perl 2.0 configuration bits out of the ModPerl::TestRun, where they don't belong, into a special config file which is included at the very end of httpd.conf [Stas Bekman]

extend Apache::Test to allow extra configuration files to be included at the very end of httpd.conf, when everything was loaded and configured [Stas Bekman]

resolve a segfault in Apache::Module::get_config() for the edge case when the package name is bogus. [Stas Bekman]

Apache::Reload: add support for watching and reloading modules only in specified sub-dirs [Harry Danilevsky <harry@deerfieldcapital.com>]

enable APR.pm's linking for apr 0.9.2 and higher, which uses a new lib naming scheme, such as libapr-0.so.0.9.2, only if apr-config and apu-config scripts exist. [Stas Bekman]

define IoTYPE_RDONLY/IoTYPE_WRONLY for perl-5.6.0 so the project compiles again under 5.6.0 [Stas Bekman]

allow output streaming filters to append data to the end of the stream [Stas Bekman]

fixes to compile with ActivePerl 5.8 beta [Randy Kobes <randy@theoryx5.uwinnipeg.ca>]

fix for directive handlers within vhosts using threaded MPMs [Stephen Clouse <stephenc@theiqgroup.com>]

fix <IfDefine MODPERL2> support

default AuthType to Basic if not set in $r->get_basic_auth_pw() [Philippe M. Chiasson <gozer@cpan.org>]

workaround glibc/Perl-5.8.0 crypt() bug (seen with threaded MPMs)

fix delete $ENV{$key} bug

fix parse_args compat method to support non-ascii characters and tr/+/ / [Walery Studennikov <despair@sama.ru>]

fix post_connection compat method to behave as it did in 1.x [Geoff Young <geoff@modperlcookbook.org>]

add support for setting $r->auth_name and $r->auth_type [Philippe M. Chiasson <gozer@cpan.org>]

add Apache->httpd_conf compat method [Philippe M. Chiasson <gozer@cpan.org>]

add default <Perl> handler Apache::PerlSection. make <Perl> blocks to be EXEC_ON_READ so apache does not parse the contents. add "Perl" directive for general use and for which <Perl> sections are stuffed into. [Philippe M. Chiasson <gozer@cpan.org>]

rename overloaded LoadModule directive to PerlLoadModule and adjust the test naming

1.99_07 - September 25, 2002

fix =pod directive test config problem [Philippe M. Chiasson <gozer@cpan.org>]

1.99_06 - September 25, 2002

add support for pod directives (=pod,=back,=cut) and __END__ directive [Philippe M. Chiasson <gozer@cpan.org>]

tweaks to support Test.pm 1.21 [Philippe M. Chiasson <gozer@cpan.org>]

add $r->add_config method to add dynamic configuration at request time

add Apache::DIR_MAGIC_TYPE constant

add support for directive handlers

fix source_scan to run with current httpd/apr

add Apache::Server->add_config method to add dynamic configuration at server startup time

add Apache::Directive->to_string method

add support for pluggable <Perl> sections

fix compilation probs with get_remote_host() that had a wrong prototype [Stas Bekman]

Apache::SubProcess now has a manpage [Stas Bekman]

fix the Apache::SubProcess tests to work with perlio-disabled Perl [Stas Bekman]

fix the filehandle leak in APR::PerlIO (both perlio-disabled and perlio-enabled Perl) [Stas Bekman]

remove dup() when converting filehandles from apr_file_t to FILE* under perlio-disabled Perl (APR::PerlIO) [Stas Bekman]

fix compilation if apache/apr do not have thread support

1.99_05 - August 20, 2002

fix PerlOptions +ParseHeaders to only parse once per-request

add external redirects Registry tests [Stas Bekman]

get rid of the compat layer in ModPerl-Registry [Stas Bekman]

ModPerl::RegistryLoader is now fully operational and tested [Stas Bekman]

Registry method handlers are now working [Stas Bekman]

core Registry packages all compile the scripts into ModPerl::RegistryROOT:: namespace and cache them in %ModPerl::RegistryCache. Both overridable by the sub-classes. [Stas Bekman]

compat tests were split into groups by functionality, send_fd test moved to compat. [Stas Bekman]

added $c->get_remote_host and a compat wrapper $r->get_remote_host + tests [Stas Bekman]

adjust the build system to support mod_perl build from the source tree. [Stas Bekman]

ModPerl::RegistryCooker syncs with mod_perl 1.0's registry: - prototypes defined checks in flush_namespace [Yair Lenga <yair.lenga@citigroup.com>] - set error-notes on error [Geoff Young <geoff@modperlcookbook.org>] - preserve status in Registry scripts [Geoff Young <geoff@modperlcookbook.org>]

apr_table_t is now an opaque type, use apr_table_elts() to get the array record [Stas Bekman]

add support for redirects with PerlOptions +ParseHeaders

backport to 2.0.35

adjust to filter register api change

added APR::ThreadMutex module

1.99_04 - June 21, 2002

various APR PerlIO updates [Stas Bekman]

stop using an apr_pool_t to allocate items for the interpreter pool, safer for threaded MPMs and prevents "leaks" when interpreters are removed from due to PerlInterpMax{Requests,Spare}

implement modperl_sys_dlclose() to avoid apr/pool overhead/thread issues

get the -DPERL_CORE optimization working again

PERL_SET_CONTEXT to the parent interpreter when cloning interpreters at request time, else dTHX might be NULL during clone in the given thread, which would crash the server.

1.99_03 - June 15, 2002

win32 fix for the global Apache->request object to make sure it uses the thread local storage mechanism

add a reference count mechanism to interpreters for use in threaded MPMs, so if APR::Pool cleanups have been registered the interpreter is not putback into the interpreter pool until all cleanups have run.

unbuffer STDERR (by turning on autoflush by default)

add support for Perl*Handler +Apache::Foo

fix open_logs,post_config,child_init hooks to run in the proper order

adjust to apr_bucket_type_t changes in 2.0.37-dev [Mladen Turk <mturk@mappingsoft.com>]

add MODPERL2 config define, as if the server had been started with -DMODPERL2

compat additions and fixes: $r->lookup_{file,uri}, $r->is_main, Apache->define

added compat for Apache::log_error [Stas Bekman]

1.99_02 - June 1, 2002

pass the PATH and TZ environment variables at startup by default as 1.xx did

fix ModPerl::Util::exit segv with 5.6.0

no longer support 5.7.x perl development versions

added compat for Apache::Table->new

various fixes to compile/run on darwin

server-scope Perl{Set,Pass}Env config now propagated to %ENV at startup

use SvOK(sv) instead of sv == &PL_sv_undef to detect undef values in xs [Stephen Clouse <stephenc@theiqgroup.com>]

complete Apache::Util 1.x compat

added Apache::MPM_IS_THREADED constant

added compat function for Apache::Constants::SERVER_VERSION

added Apache::Constants::export stub for compat

added noop stubs for timeout functions removed from 2.0: $r->{soft,hard,reset,kill}_timeout

turned on PerlOptions +GlobalRequest by default for perl-script handler unless it is explicitly turned off with PerlOptions -GlobalRequest

added APR::OS::thread_current function

added support for 1.x $r->subprocess_env functionality

added support for $r->push_handlers(PerlHandler => ...)

added support for $r->proxyreq to detect proxy requests

$r->content_type($val) now calls ap_set_content_type underneath

add the err_header_out() wrapper to Apache::compat + corresponding tests [Stas Bekman]

fix $r->dir_config lookup of values set in the server context

added Apache::REDIRECT shortcut constant

various fixes for method handlers

use Apache::ServerUtil in Apache::compat so Apache->server works in compat mode [Dave Rolsky <autarch@urth.org>]

add Apache::Util::unescape_uri alias to Apache::unescape_url in Apache::compat

change Apache::unescape_url to return the escaped url as 1.x does

disabled term coloring by default (enable with env var APACHE_TEST_COLOR=1)

fix for APR::IpSubnet->new to check return status apr_ipsubnet_create

enabled APR::SockAddr module

turn on binmode for filehandle used in $r->send_fd

get MP_{TRACE,DEBUG} Makefile.PL options working on win32

various fixes to build/run with bleedperl

various fixes for win32 to get make test passing

moved constuct_{url,server} methods to Apache::URI module

implement Apache::URI::parse in Apache::compat

give Perl*Handlers precedence over other handlers by using APR_HOOK_FIRST rather than APR_HOOK_LAST

workaround bug in 5.6.1 when XSLoader loads DynaLoader, wiping out any dl handles it had been keeping track of.

tidy up test to run standalone (without modperl test config) [Stas Bekman]

override T_PTROBJ INPUT typemap to croak if object is not a blessed reference, to prevent possible segv from e.g. Apache::Server->process

apr_lock.h is gone; disable APR::Lock for the moment

enabled the Apache::Process module

fix ModPerl::Util::exit to clear $@ before calling Perl_croak

cut down on some build noise

fix 'PerlOptions +GlobalRequest' when used within subrequests

get rid of some "subroutine redefined" warnings in ModPerl::MM that show up with newer bleedperls.

a few fixes for Apache::compat [Dave Rolsky <autarch@urth.org>]

1.99_01 - April 6, 2002

First public release of mod_perl-2.0-tobe.