among other things, this fixes a problem on at least Solaris and Linux
which causes apache children to SEGV on startup. I've tested this
version on Darwin and Linux.
changes since 1.25:
1.29 - Oct 7, 2003
Add a workaround for the 'rand' bug for perl 5.8.1 (compiled with
either -DUSE_HASH_SEED or -DUSE_HASH_SEED_EXPLICIT, which is the
default), causing all forked procs to produce the same rand
sequence. [Stas]
Fix t/net/perl/sym.pl (called by modules/symbol) not to affect other
tests (internal/http-get and internal/http-post, which were failing to
call exit) [Stas]
Fix Apache::ExtUtils to work with blead perl (it was breaking the
build) http://rt.perl.org/rt2/Ticket/Display.html?id=23803 [Stas]
1.28 - July 2, 2003
Apache::FakeRequest now isa Apache so code that is carefull about
$r and checks that $r->isa('Apache') will not fail [David Wheeler
<david@kineticode.com]
Add Mac OS X support to Apache::SizeLimit [David Wheeler
<david@kineticode.com>]
Change Apache::SizeLimit to not push a cleanup handler if already in
the cleanup handler phase, and adjust docs to show that cleanup
handler is the preferred phase to use [Perrin Harkins
<perrin@elem.com>]
Rename Apache::test to Apache::testold because Apache::test on
case-insensitive systems will collide with Apache::Test which
supercedes Apache::test. So if you want to keep on using Apache::test,
either bundle it with your project (putting it under inc/ or t/ so it
won't be installed) or require mod_perl 1.28 and use Apache::testold
instead. Of course the best route is to port your test suite to use
a much better Apache::Test which work with mod_perl 1.0 and 2.0.
[Philippe M. Chiasson, Stas Bekman]
Tweak mod_perl.h to defined _INCLUDE_APACHE_FIRST only after apache
headers were included [Stas Bekman]
avoid various warnings under src/modules/perl/:
- declare bufsiz to be STRLEN in Apache.xs, and add
STRLEN to Apache/typemap
- add I32 typecast in Constants.xs
- avoid use of unregistered local variables for Win32
in mod_perl.c and perl_config.c
- s/I32/U8/ in mod_perl.h, perl_config.c, and perl_util.c
- declare i and http_code to be STRLEN in perl_util.c
[Stas Bekman, Randy Kobes]
don't use $r variable in Apache::PerlRun::compile(), so the script
won't use use inherited $r by mistake [Stas Bekman]
use touch() from ExtUtils::Command, rather than a system touch(),
for the benefit of platforms without touch(). [Randy Kobes
<randy@theoryx5.uwinnipeg.ca>]
can't let the default typemap rule to convert sv into char* in
unescape_url, since it doesn't handle correctly undefs (returns an
unallocated "" string, which then causes a segfault in
ap_unescape_url. use SvPV_force, instead, which does the right
thing. [Stas Bekman]
Make sure to start perl, if it's not running, before processing Perl*
directives, with threaded perl and PERL_STACKED_HANDLERS=0 [Stas
Bekman]
Add Apache::Module to Bundle::Apache [Stas Bekman]
use $Config{'installstyle'} instead of hardcoded 'lib', to handle
Makefile.PL's PREFIX option correctly [Philippe M. Chiasson
<gozer@cpan.org>]
prevent segfaults in mod_perl_mark_where() when a sub can't get
resolved [Gerald Richter <richter@ecos.de>]
Apache::Status: Need to load B::Terse/TerseSize if it wasn't loaded
yet in that child before using it. [Dan Sully <daniel@electricrain.com>]
document the server_root_relative() method [Stas Bekman <stas@stason.org>]
eliminate warnings when flushing functions with empty () prototypes in
Apache::PerlRun::flush_namespace [Yair Lenga <yair.lenga@citigroup.com>]
fix Apache::Status to not use :: in filenames, which is not allowed on
certain OSs [DH <crazyinsomniac@yahoo.com>]
various cygwin fixes [Per Einar Ellefsen <per.einar@skynet.be>]
Document the possible misuses of the Apache::Constant constants
[Per Einar Ellefsen <per.einar@skynet.be>]
1.27 - June 1, 2002
workaround Cwd bug in 5.8.0-RC1 that breaks apache configuration on solaris
fix get_set_PVp() to properly set NULL values when passing in undef
thanks to Lyle Brooks for the spot
[Stephen Clouse <stephenc@theiqgroup.com>]
Apache::Registry/PerlRun/RegistryNG errors are now saved
in $r->notes('error-notes')
[Jesse Erlbaum <jesse@vm.com>]
make sure DynaLoader is loaded before XSLoader to workaround possible
segv when using mod_perl as a dso with perl 5.6.1
autoset PERL_USELARGEFILES=0 if needed
fix taint issues with bleedperl
fix bug in modules/util test
[Tatsuhiko Miyagawa <miyagawa@edge.co.jp>]
Adjust the mailling list addresses
's|\@apache\.org|\@perl.apache.org|' [Stas Bekman <stas@stason.org>]
Apache::PerlRun will now localize $SIG{__{DIE,WARN}__}
thanks to Jon Coulter for the spot
PERL5LIB support now properly unshifts paths into @INC rather than push
[Tatsuhiko Miyagawa <miyagawa@edge.co.jp>]
do not clear symbol tables within a package in perl_clear_symtab()
used by directive handler extensions
[Stephen Clouse <stephenc@theiqgroup.com>]
properly deal with $r->status codes (e.g. redirect) in
Apache::RegistryNG [Geoff Young <geoff@modperlcookbook.org>]
fix multiple %LocationMatch in <Perl> sections bug
[Salvador Ortiz Garcia <sog@msg.com.mx>]
rip -D_GNU_SOURCE out of Perl 5.7.3+'s ccflags, which modperl doesn't
need and apache won't compile with [Stas Bekman <stas@stason.org>]
make sure PerlSetEnv variables are visible after first access
to each child [Geoff Young <geoff@modperlcookbook.org>]
workaround Apache::Constants::AUTOLOAD problem with bleedperl
the first flag argument to perl cannot start with space, since perl tries
to open the " -spi.bak" as a file. fix that in the win32 case.
[Stas Bekman <stas@stason.org>]
starting from perl 5.7.3 for tied filehandles, tiedscalar magic is applied
to the IO slot of the GP rather than the GV itself. adjust the TIEHANDLE
macro to work properly under 5.7.3+. [Charles Jardine <cj10@cam.ac.uk>,
Stas Bekman <stas@stason.org>]
added perl_perl_merge_dir_config and array_header2avrv symbols to
mod_perl.def for win32 and mod_perl.exp for aix.
[Randy Kobes <randy@theoryx5.uwinnipeg.ca>]
INSTALL.apaci: added an explanation of how perl has to be built in
order to use DSO without problems (copied from the guide) based on
email from Doug. [Stas Bekman <stas@stason.org>]
warn if Perl is configured with -Duseshrplib and a libperl.so is found
in a place where it should not be, example: /lib /usr/lib or /usr/local/lib
fix potential segv in Apache::URI->rpath
[Vyacheslav Zamyatin <slawa@w-m.ru>]
require URI::URL to work with newer libwww-perl
allow overriding of container directive handlers using the func parameter
[Geoffrey Young <gyoung@laserlink.net>]
enable directive handler support for TAKE13
[Geoffrey Young <gyoung@laserlink.net>]
1.26 - July 11, 2001
fix 'make test' problem seen with Perl 5.005_03
remove $r->finfo usage from Apache::PerlRun, clearly finfo isn't as
stable as it should be
[Surat Singh Bhati <surat@indiamart.com>]
Apache->server will now point the current VirtualHost when inside a
<Perl> section, thanks to Robin Berjon for the spot
allow per-server and per-location PerlSetEnv to be properly merged
when a per-server handler is configured, thanks to Michael Barry for
the spot
1.25_01 - July 6, 2001
add symbols to mod_perl.exp for aix/axkit
add Apache::add_version_component() function
make sure Apache::ExtUtils can be found when building inside of the
apache source tree, thanks to Jonathan Swartz for the spot
fix -[TB] file tests against $r->finfo, thanks to Geoffrey Young for
the spot
Apache::SizeLimit enhancements [Perrin Harkins <perrin@elem.com>]:
- Added support for minimum shared memory and maximum unshared memory
settings.
- Added extra diagnostics to tell how many requests a process served,
how long it lived, and how much shared memory it was using when
SizeLimit killed it.
perl_destruct_level must always be 2 for DSO builds to prevent
leaking on restarts, thanks to Paul G. Weiss for the spot
make sure file to be reloaded can be found in @INC, adjusting based on
%INC value if needed
[Ilya Konstantinov <modperl@future.galanet.net>]
croak if the filehandle passed to $r->send_fd is NULL, otherwise
apache will segfault
if PREFIX is given to Makefile.PL add it to @INC at startup
[Philippe M . Chiasson <gozer@cpan.org>]
add %Apache::MyConfig aliases for Apache::src backwards compat
[Philippe M . Chiasson <gozer@cpan.org>]
$r->custom_response($code, undef) will now unset the current CustomResponse
[Geoffrey Young <gyoung@laserlink.net>]
fix to compile with sfio+ithreads, thanks to Joe Schaefer for the spot
adjust perl_clear_symtab() to deal properly bleedperl's version of
cv_undef() (which broke modules with directive handlers)
thanks to Geoffrey Young for the spot
add $r->allowed method [Philippe Troin <phil@fifi.org>]
fix 'make offsite-tar' [Geoffrey Young <gyoung@laserlink.net>]
fix double-loading bug of Perl{Require,Module}s at startup time
improve Apache::MyConfig [Stas Bekman <stas@stason.org>]
$r->no_cache(0) will unset cache headers
[Geoffrey Young <gyoung@laserlink.net>]
export hvrv2table (needed by Apache::Request) for aix and win32
[Jens-Uwe Mager <jum@helios.de>, Randy Kobes <randy@theoryx5.uwinnipeg.ca>]
fix 'make tar_Apache' [Geoffrey Young <gyoung@laserlink.net>]
make sure global for Apache->request is reset after configuring %ENV
[Gerald Richter <richter@ecos.de>]
adjust 'U' magic functions to Perl 5.7.x-dev prototype change
Put Apache's CFLAGS into AP_CFLAGS instead of CFLAGS, so that
people who like to override CFLAGS from the make line (make
CFLAGS='-arch ppc -arch i386') can do so without stomping the
Apache flags. [ Wilfredo Sanchez <wsanchez@KnowNow.com> ]
by moving the inclusion of buildlink3.mk files outside of the protected
region. This bug would be seen by users that have set PREFER_PKGSRC
or PREFER_NATIVE to non-default values.
BUILDLINK_PACKAGES should be ordered so that for any package in the
list, that package doesn't depend on any packages to the left of it
in the list. This ordering property is used to check for builtin
packages in the correct order. The problem was that including a
buildlink3.mk file for <pkg> correctly ensured that <pkg> was removed
from BUILDLINK_PACKAGES and appended to the end. However, since the
inclusion of any other buildlink3.mk files within that buildlink3.mk
was in a region that was protected against multiple inclusion, those
dependencies weren't also moved to the end of BUILDLINK_PACKAGES.
pkgsrc. Instead, a new variable PKGREVISION is invented that can get
bumped independent of DISTNAME and PKGNAME.
Example #1:
DISTNAME= foo-X.Y
PKGREVISION= Z
=> PKGNAME= foo-X.YnbZ
Example #2:
DISTNAME= barthing-X.Y
PKGNAME= bar-X.Y
PKGREVISION= Z
=> PKGNAME= bar=X.YnbZ (!)
On subsequent changes, only PKGREVISION needs to be bumped, no more risk
of getting DISTNAME changed accidentally.
* Improved documentation for mod_perl.
* Many bugfixes.
* Apache::Server->loglevel can now be modified
* allow $r->finfo to be modified
* include mod_perl hook/feature config and pod in Apache::MyConfig
* prevent $PerlRequire in a <Perl> section from triggering an endless loop
* allow modification of $r->hostname
* new Apache::test::static_modules() method
* add proper offset support to Apache::read
* change Apache::PerlRun's Apache class relationship from is-a to has-a
* Apache::SubRequest->run(1) allows ap_send_http_headers() to output
for subrequests
* Apache::{Registry,PerlRun} will now log an error if $filename is NOT_FOUND
* make extra sure Apache::Constants::AUTOLOAD does not recurse looking
for sub __AUTOLOAD
* $r->get_basic_auth_pw and $r->note_basic_auth_failure will default
$r->auth_type to "Basic" if not already set
* $r->auth_type is now writeable, e.g. $r->auth_type("Basic")
* added Apache::user method
* disable r->proxyreq checking unless PerlTransHandler is enabled and
configured
* PerlAddVar is now an ITERATE2 directive rather than TAKE2
* added Apache::Server::error_fname method
* avoid duplicate buffer copy in {read,get}_client_block by reading
directly into Perl's SV buffer
* switch usage of hard_timeout() to soft_timeout(), so if SIGALRM
happens during Apache::{print,read}, the script will continue run,
allowing proper cleanup (e.g. DESTROY)
* add PerlCleanupHandler to the {get,set}_handlers table
* quotemeta path_info in Registry regexp
* flush r->finfo cache if r->filename fails
* backed out $Apache::Server::ConfigTestOnly until proper Apache
support is in place
* Apache::ExtUtils will now generate an END routine to call ap_remove_module()
* rename Apache::{PerlRun,RegistryNG}::update_mtime to set_mtime, so
Apache::update_mtime is not overridden
* constant 'DECLINED' wasn't imported by Apache::RegistryBB
* Apache::Resource was not converting PERL_RLIMIT_AS to MB values
* 'sub handler : method {}' is now treated as a method handler
* variable $Apache::Server::ConfigTestOnly is set to 1 if Apache
is running in configuration test mode (httpd -t)
* add PerlAddVar directive, like PerlSetVar, but uses ap_table_add
instead of ap_table_set
* Apache::Table->unset can now be called with an array reference
* Apache::PerlRun::flush_namespace fixes, so aliased (imported)
code/hash/array/scalar are undefined without undef-ing the pointed-to
data and without using B.pm, thanks to Richard Chen for the suggestion
* document Apache::print's special behavior wrt references
* fix core dump triggered by <Perl>do 'foo.pl'</Perl>,
* pass $Config{ccflags} to apache for 5.6.0+
* fix Apache->httpd_conf, thanks to Will Trillich for the spot
* fixed 'make clean' to remove FILES => passed to MakeMaker
* add Apache::FILENO method for 5.6.0+ tied filehandle support
thanks to Richard Titmuss for the spot
* --disable-rule=EXPAT is passed to Apache's configure to avoid
XML::Parser conflicts
* fix PerlSetVar inheritance bug
* set r->notes("error-notes") to $@ if $@ after a Perl*Handlers is run
* added INSTALL.raven
* $c->remote_ip($ip) now also sets conn->remote_addr to make
IP-based access control work correctly
* Apache::URI::port wasn't setting the port correctly
* $Apache::Registry::NameWithVirtualHost fix take 2
(move is_virtual logic from mod_perl.c to Registry.pm)
* added Apache::OPEN method for 5.6.0+ tied filehandle support
* Apache::Table is now loaded by default (if enabled), rather than
autoloading when first needed
* $r->document_root can now be modified
* upgrade license to apache software license version 1.1
* $r->the_request can now be modified
* warn that dso+Perl malloc needs a Perl built with -Ubincompat5005
* add Apache::BINMODE stub for 5.6.0 tied filehandle support (fixes cgi.t #4)
* add $r->server->loglevel() and relevant constants.
* $Apache::Server::AddPerlVersion uses $^V for Perl/v5.6.0+
* reset the stack pointer after calling perl_require_module() in
perl_call_handler(). this fix will most likely cure the reports of
"Can't upgrade that kind of scalar at ..."
* change $Apache::VERSION check to use a string instead of SvNV, which
was troublesome with Perl 5.6.0
* Apache::src fixup to quiet warnings under Perl 5.004
* Apache::src::apxs fixups to quiet warnings if apxs doesnt exist or
httpd is not dso enabled
* fix #ifdef SGI_BOOST typo
* proxy support fixed wrt RFC2068
* set Apache::Resource::DEFAULT_RLIMIT_AS (address space) to 64Mb
* Bundle::Apache will now install Bundle::LWP before mod_perl
* support Apache::FakeRequest::args in a list context
* compile fixes for 5.6 + -Duse5005threads
* log to parms->server instead of stderr if PerlRequire fails
* make sure lib/Apache/MyConfig.pm is written before used
* fixup the output of apxs -q CFLAGS to preserve quoting (again)
* removed the generated apaci/mod_perl.config from MANIFEST
* new variable $Apache::Server::StrictPerlSections, if true, will croak
<Perl> section generates invalid Apache configuration syntax
* new Apache::src->ccflags method to combine $Config{ccflags} and
apxs -q CFLAGS
* added Apache::src->apxs method
* make use of $Config{shrpenv} to find CORE/libperl.so
* fix Apache::Registry bug when filename starts with a 0
* Apache::Registry will restore $r->status to the original value
* fixup the output of apxs -q CFLAGS to preserve quoting
* dso fix fix: modules with END blocks calling xs code (e.g. DBI) would
core dump because the xs .dso had been unloaded, now dso's are not
unloaded until after END blocks are called.
* force environ[] to be copied before any Perl code is loaded
* localize $_ in Apache::send_cgi_header
* fix precedence problem in StatINC.pm
* if hash value has magicalness in <Perl>, invoke FETCH
* sync with 1.3.12's virtual_host section logic for httpd -S + <Perl>
* remove t/httpd symlink during 'make realclean' and when rebuilding
* add Apache::src::otherldflags method
* __THE__ dso fix: dlclose() xs shared objects and call perl_shutdown()
before mod_perl's libperl.so is unloaded/reloaded by mod_so
* add /D "_MSWSOCK_" to ApacheModulePerl.dsp
* Apache::RegistryBB returns DECLINED instead of FORBIDDEN if -d $r->finfo
* add Apache::Util::validate_password()
* call (void)perl_request_rec(r) asap, instead of waiting till the
response phase, e.g. so CGI.pm can be used before PerlHandler, without
having to call Apache->request($r);
* Apache::perl_hook() fixes for Perl*Api
* save/restore $^W in Apache::PerlRun
* fix Apache::Registry when $r->uri ends with a /
* add virtualhost support to Apache::RegistryLoader
* $Apache::Registry::NameWithVirtualHost fix
* allow Apache::PerlRun::handler to be subclassed
* fix $r->connection->remote_ip for SGI performance patches (#ifdef SGI_BOOST)
* mod_perl.exp is now installed
* pod fixups to avoid WARNING from newer pod2*
* Apache::RedirectLogFix now uses $r->last
* tweaks for sfio
* update Apache::SIG docs
* fix get_set_PVp in mod_perl_xs.h
* tweaks to compile/run with 5.5.670 + -Dusethreads
* $r->hostname now documented
* Apache::File methods are now documented
* avoid quoting <Perl> config if args_how == RAW_ARGS
* PerlPassEnv maintains its value beyond the first request,
* prevent possible core dump in $r->pnotes if get_module_config returns
NULL
* fix Apache::Status::status_cv_dump for Perl/5.6-dev
* use perl_get_sv("]") instead of patchlevel for $AddPerlVersion
* Apache::Util functions $r->unescape_uri, $r->unescape_uri_info,
$r->size_string are now documented
* $r->request_time is now documented
* Look for the makepl_args.mod_perl file as .makepl_args.mod_perl in
./ and ../ too since the book says it works so.
* PerlRestartHandler is now enabled w/ ALL_HOOKS=1 (or EVERYTHING=1)
* $r->no_cache(1) will now set the r->headers_out "Pragma" and
"Cache-control" to "no-cache"
* `PerlSetEnv PERL5LIB ...' now works again
* PerlFreshRestart semantics changed to preserve order of PerlModule's
and not to reload modules while actually iterating over %INC
* $r->current_callback now works properly when PerlHandler invokes
subrequests
* if an Apache::Table is NULL return undef (e.g. $r->notes during ChildInit)
* ActivePerl compile patches
* document that Apache 1.2.x is no longer supported
* Apache::src now supported with USE_APXS=1
* disable experimental perlrunxs until future notice
* add sanity check for libgdbm
* change PL_siggv usage to gv_fetchpv("SIG", ...) for Perl 5.6-tobe
* document $r->get_handlers, $r->set_handlers, $r->push_handlers
* document PerlSetVar
* document the fact that $r->dir_config handles keys in a
case insensitive manner
* avoid logging "rwrite returned -1" multiple times in the
same request
* bugfix in write_client() when running under APACHE_SSL
* document the fact that $r->connection->user can be used to set
the authenticated user name
* document the fact that $r->uri sets/gets the URI minus the query string,
not the complete URI
* Apache::RegistryLoader::handler was rewritten to allow a better
diagnostics of scripts preloading problems.
* document the fact that $r->args can be used to set the query string
as well as get it
* add $r->connection->fileno, provides the client file descriptors. This
can be used to detect client disconnect without doing any I/O, e.g. using
IO::Select
* if $r->bytes_sent has not been calculated, then do so before returning
the value.
* ensure that all -I directories printed by Apache::src actually exist
* don't assume $uri =~ /$path_info$/ in Apache::Registry/PerlRun
* fix segfault when using Limit in <Perl> sections
* make $c->remote_host writeable
* add per-server PerlSetVar variables, accessed using
Apache->server->dir_config or $r->server->dir_config.
$r->dir_config merges them with per-directory variables.
* documentation typo
* add $r->server->uid and $r->server->gid
* add per-server configuration merge
* `_' is no longer escaped in Apache::Registry package names
* fix $ENV{PATH} corruption
* mod_perl_version.h removed from MANIFEST
* preload Apache::Constants::OPT_EXECCGI() for Apache::{Registry,PerlRun}
* Apache::SizeLimit now uses $r->child_terminate instead of Apache::exit(-2)
* get rid of various 5.005_60 warnings
* add Status{Terse,TerseSize,Deparse,Fathom,OptionsAll} options to
Apache::Status
* adjust mod_perl.h for 5.005_59 perl_eval_{pv,sv} rename
* fix flush_namespace undef logic in Apache::PerlRun
* Tweak Apache::content to comply with media-types embedded in content-types
(RFC 2616 section 3.7)
* Removed and added a few modules from the Bundle file.
* Renamed the Apache::StatINC parameters to StatINC_<something>. Changed
StatINC_Debug to take a number as parameter instead of "on" to support
"debug levels"
* fix refcount bug in %VirtualHost [] values
* $r->read will now properly check the return value of
ap_setup_client_block() and return undef if != OK,
e.g. if LimitRequestBody is exceeded
* fix bug in register_cleanup()
* added StatusLexInfo option to Apache::Status
* turn off warnings in Apache::Status::as_HTML symdump code
* tweak Apache::RegistryNG so it works with virtual includes
* change Apache::File->tmpfile flags from O_WRONLY to O_RDWR
* fix Apache::RegistryBB when $r->filename NOT_FOUND
* cygwin port
* Documented $r->pnotes
* Change "setting auth_name" trace message so we don't get it without
having enabled a MOD_PERL_TRACE level
* s/class/pclass/g so we can compile w/ c++
* mod_perl will now save/restore SIGALRM
* fix Apache::Status bug prototype check of 'use constant' subs
* added set_byterange() and each_byterange() methods
* added proper support for {Location,Directory,Files}Match in <Perl> sections
* rework PerlFreshRestart to avoid core dump triggered w/ 5.005_03
* fix $Apache::Server::Starting under dso
* use ap_bfileno() instead of r->connnection->client->fd directly
* fix possible overwrite in perlio.c:sfapacheread() #ifdef USE_SFIO
* dont use DEFAULT_PATH if r->subprocess_env->{PATH} is already set
* ensure perl_setup_env() is called just once per-request
* :common Apache::Constants are compiled at bootstrap time, so CVs are
shared and AUTOLOAD is avoided, which was known to cause a spin
while loading SERVER_ERROR for particular Perl errors
* <Perl> sections now use 1.3.7-dev's cmd_parms->context to cure many
known, old bugs, e.g. @DirectoryIndex outside of %Location, .htaccess
and many more
* fix bug where top-level PerlSetEnv's would be lost after 1st request
* fix bug in Apache::ModuleConfig->get
* fix rwrite error message
* Change Apache::SizeLimit so that it supports Solaris 2.6 and above
* Fixed apaci/load_modules.pl.PL to properly fixup log_agent and
log_referer when loaded as DSOs.
Apache perl modules, and each compiled and installed/de-installed apparently
correctly.
As a side effect of the dynamic PLIST, we no longer need to to have separate
-static and -shared PLISTs. It's now easier than ever to make a perl5
package for NetBSD :)