Changes for version 1.99_16

  • Fix a compilation problem breaking 1.99_15 (sv_copypv was added in perl 5.7.3) [Jason Woodward <woodwardj@jaos.org>]
  • Added $r->content_languages in Apache::RequestRec [Gozer]
  • APR::Bucket: add delete() and destroy() methods [Stas]

Changes for version 1.99_15

  • replace the memory allocation for modperl filter handlers to use a temporary subpool of the ap_filter_t object. previously using perl's safemalloc had problems on win32 (randomly my_perl == NULL) [Stas]
  • Apache::Module remove_loaded_module re-added [Gozer]
  • Disable Apache::HookRun::run_create_request -- it's already run internally by Apache::RequestRec->new [Stas]
  • Update Apache::RequestRec->new() to initialize members of request_rec which were added some time ago (without it we were getting segfaults in the new pseudo_http test. [Stas]
  • Apache::CmdParms->limited member replaced by is_method_limited() method [Gozer]
  • Apache::Module changes [Gozer]
  • readwrite => readonly: cmds, next, name, module_index, minor_version, version
  • removed: remove_loaded_module, remove_module
  • ensure that a sub-dir Apache-Test exists in the source distro (this is a requirement, since the test suite relies on the particular Apache-Test version distributed with the mod_perl source) [Stas]
  • combine handler resolving failure error with the actual error, so there is only one logged entry [Stas]
  • pod manpages are now glued to all .pm files for which .pod exists at 'make install' phase [Stas]
  • Apache::RequestIO::sendfile() now indicates which file it has failed to open on failure. [Stas]
  • fix Apache::SubRequest's methods: lookup_file, lookup_uri, lookup_method_uri to default the last argument to r->proto_output_filters (no request filters for the subrequest) and not r->output_filters->next as it was before (one filter was getting skipped and the rest of the filters were applied *twice*). [Stas]
  • Apache::CmdParms changes [Gozer]
  • readwrite => readonly: override, limited, directive, pool, temp_pool, server, path, cmd, context, err_directive
  • removed: limited_xmethods, xlimited, config_file, err_directive
  • Fix a bug in APR::Bucket->new when a passed argument was of type PADTMP [Stas]
  • Apache::Connection changes [Stas, "Fred Moyer" <fred /about/ taperfriendlymusic.org>]
  • readwrite => readonly:
    • pool, base_server, local_addr, remote_addr, remote_ip, remote_host, aborted, local_ip, local_host, id, conn_config, sbh, bucket_alloc
  • removed: logname
  • Move check_cmd_context from Apache::Command to Apache::CmdParms.
  • Gozer
    • Add :context group of constants for check_cmd_context(). NOT_IN_VIRTUALHOST, NOT_IN_LIMIT, NOT_IN_DIRECTORY, NOT_IN_LOCATION, NOT_IN_FILES, NOT_IN_DIR_LOC_FILE & GLOBAL_ONLY [Gozer]
    • Removed Apache::Command method soak_end_container [Gozer]
    • Removed Apache::Module methods (dynamic_load_handle and find_module_name) [Gozer]
    • All Apache::Command methods are now read-only [Gozer]
    • Removed Apache::Command methods (func and cmd_data) [Gozer]
    • Removed Apache::Directive methods (data & walk_config) [Gozer]
    • All Apache::Directive methods are now read-only [Gozer]
    • Filters should not reset $@ if it was already set before invocation [Gozer]
    • Apache::compat server_root_relative now correctly handles absolute paths like ap_server_root_relative does [Gozer]
    • Fix a bug in <Perl> sections with multiple aliases in a virtualhost container. [Gozer]
    • PerlModule, PerlRequire, Perl and <Perl> is now supported in .htaccess. They will run for each request. [Gozer]
    • removed support for httpd 2.0.46. httpd 2.0.47 is now the minimum supported version. [Geoffrey Young]
    • Static builds for httpd >= 2.0.51 available. With the new MP_AP_BUILD option, configure and compile an httpd with mod_perl statically linked in [Gozer]
    • Apache::RequestRec methods changes [Stas]
    • readwrite => readonly:
      • connection, canonical_filename, header_only, main, next, prev, pool, per_dir_config, request_config, proto_num, protocol, request_time, server, the_request, unparsed_uri
    • removed:
      • remaining - this method is not needed if the deprecated $r->client_block methods aren't used, (use $r->read $r->instead) canonical_filename - it's a private member
    • The func Apache::SubProcess::spawn_proc_prog is now a method: $r->spawn_proc_prog [Stas]
    • Apache::Process methods (pool, pconf and short_name) are now read-only
  • Stas
    • ($r|$c|$s)->server_root_relative were removed. Now only an explicit and somewhat deprecated function API remains: Apache::ServerUtil::server_root_relative($pool, $path); it's too easy to cause memory leak with this method, and it's inefficient as it duplicates the return value, to avoid potential segfaults if the pool it was allocated from gets destroyed and the value is attempted to be used. Instead of this method use the equivalent: File::Spec->catfile(Apache::ServerUtil::server_root, $fname); [Stas]
    • $r->psignature now lives in the package it belongs to: Apache::RequestUtil (previously lived in Apache::ServerUtil). [Stas]
    • A few functions moved namespace from Apache:: to Apache::ServerUtil:: (to make it easier to find the container of the function): [Stas]
      • exists_config_define
      • server_root
      • get_server_built
      • get_server_version
    • fix an old outstanding bug in the APR::Table's TIE interface with each()/values() over tables with multi-values keys. Now the produced order is correct and consistent with keys(). Though, values() works correctly only with perl 5.8.x and higher. [Joe Schaefer]
    • require Perl 5.6.1, 5.6.0 isn't supported for a long time, but we weren't aborting at the Makefile.PL stage [Stas]
    • Apache::RequestUtil::method_register($s->process->pconf, 'FOO'); is now $s->method_register('FOO'). Apache::RequestUtil::add_version_component($s->process->pconf, 'BAR/0.1'); is now $s->add_version_component('BAR/0.1'). [Stas]
    • Remove $Apache::Server::StrictPerlSections. Now, all <Perl> sections errors are fatal by default and cause server startup to abort on error. [Gozer]
    • Fix ($r|$filter|$bucket)->read() functions to run the set magic logic, to handle cases when a passed buffer to fill is not a regular scalar. [Stas]
    • Apache::ServerRec accessors changes: [Stas]
    • readonly accessors:
      • process, next, is_virtual, module_config, lookup_defaults and addrs
    • readwrite accessors with the exception of threaded mpms, where the accessors are writable only before the child_init phase (i.e. before threads are spawned):
      • server_admin, server_hostname, port, error_fname, error_log, loglevel, timeout, keep_alive_timeout, keep_alive_max, keep_alive, names, wild_names, limit_req_line, limit_req_fieldsize, limit_req_fields, and path
    • supports a new type of struct accessor, which is just like read/write one, but doesn't allow write access starting at the ChildInit phase under threaded mpm (to avoid thread-safely issues) [Stas]
    • In order to be consistent with Apache::RequestRec, Apache::Server is now Apache::ServerRec and all methods/functions from Apache::Server now live in Apache::ServerRec. [Stas]
    • Use a context-specific Perl_load_module() instead of load_module(), to avoid the problem with 'load_module' symbol resolution on certain platforms, where for some reason it doesn't get resolved at compile time to Perl_load_module_nocontext [Stas]
    • Make it possible to disable mod_perl for the base server, but enable it for the virtual hosts [Stas]
    • Removed the deprecated path argument to $r->add_config() [Gozer]
    • Created a META.yml for CPAN and friends, including Apache-Test as a private resource to keep CPAN from installing mod_perl when a user just wants Apache::Test [Gozer]
    • Moving HTTP specific functions get_status_line, method_register from Apache:: to Apache::RequestUtil:: to match their container [Stas]
    • Adjust the list of mod_perl header files installed into the Apache2 include/ directory, made necessary from the renaming and refactoring arising from the decoupling of APR and APR::* from mod_perl.so. Also include modperl_apr_perlio.h under xs/APR/PerlIO/ in the list of such files installed [Stas, Randy Kobes]
    • $r->read()/READ now throw exceptions [Stas]
    • $r->rflush now returns nothing (was always returning APR::SUCCESS before) [Stas]
    • bug reports generating code: [Stas]
    • add (apr|apu)-config linking info
    • show the full path to the config file used to get the data for the report
    • The APR and APR::* family of modules can now be used without having to load mod_perl.so. On *nix, this is done by compiling the needed functions from the appropriate sources used to build mod_perl.so into APR.so, and then arranging for APR::* to 'use APR ()'. On Win32, a static library of needed functions is built, and APR/APR::* then link into this library [Stas, Joe Schaefer, Randy Kobes]
    • APR::RequestIO::sendfile() now flushes any buffered output before sending the file contents out. If the return status is not checked and an error happens it'll throw an exception. Fix offset handling. [Stas]
    • Registry: remove the misleading prefix "$$: $class:" in the logged error message, since not only registry errors will get logged if $@ is set [Stas]
    • change t/REPORT to suggest to post bug reports to the modperl users list, to be consistent with the documentation [Stas]
    • amd64 fixes [Joe Schaefer <joe+gmane@sunstarsys.com>]
      • use IV insteaf of int where a pointer is used
      • mpxs_APR__Bucket_new needs to use apr_size_t/off_set_t types
    • APR::Socket::recv() now returns the length of the read data [Stas]
    • APR::Bucket's read() returns "" instead of undef when there is no data to read. [Stas]
    • fix a bug in Registry handlers, where the same error was logged twice and potentially a wrong error code returned [Stas]
    • Apache::RequestIO: print(), printf(), puts(), write(), rflush() throw an exception on failure [Stas]
    • Apache::SubRequest: run() throw an exception on failure [Stas]
    • Apache::Filter: [Stas]
      • remove unneeded methods: remove_input_filter() and remove_output_filter(), fputs()
      • frec() accessor is made read-only
      • fflush(), get_brigade() and pass_brigade() now throw exceptions if called in the void context
      • read, print() and puts() throw an exception on failure
    • Apache::FilterRec: [Stas]
      • remove the next() accessor since it's not used by Apache at the moment
      • name() is made read-only
    • APR::URI: [Stas]
      • removed accessors o is_initialized() (internal apr_uri flag) o dns_looked_up() and dns_resolved() (they are not used by apache/apr)
      • all remaining accessors now accept undef value, which unsets the field
    • Extended WrapXS code to support a new type of accessor: char * which accepts undef to set the C pointer to NULL and as such unset the member of the struct. [Stas]
    • Exception error messages now include the error id along with the error message (as they did in first place). [Stas]
    • $r->finfo now accepts APR::Finfo object as an optional argument. [Stas]
    • APR::Finfo [Stas]
      • change stat() to return finfo
      • make all field accessors readonly
    • ARP::password_validate is now ARP::Util::password_validate [Stas]
    • APR::IpSubnet::new() now throws APR::Error exception (not returning rc) [Stas]
    • rename package APR::NetLib -> APR::IpSubnet to match the class name
  • Stas
    • APR::BucketType: [Stas]
      • name is readonly
    • APR::Brigade [Stas]
      • destroy() now throws APR::Error exception (not returning rc)
      • rename empty => is_empty
      • added the method cleanup()
      • flatten() now returns the number of bytes read (and passed the buffer by the argument) and throws APR::Error exception
    • APR::Bucket: [Stas]
      • read() now returns the length of the read data and throws APR::Error exception (not returning rc). The returned scalar is now TAINTED.
      • type->name now has a module APR::BucketType
      • type(), length(), start(), data() are now all readonly
      • new() fix a bug in offset handling

Changes for version 1.99_14

  • APR::SockAddr::port() accessor is now read-only [Stas]
  • APR::Pool now has destroy() and clear() available [Stas]
  • now logging the errors happening in pool cleanup callbacks [Stas]
  • use the new Apache-Test attribute -minclient in the test suites. Now along with the default maxclients = minclients+1, we no longer should get 'server reached MaxClients setting' errors. [Stas]
  • new API for APR::Socket recv() and send() + updated tests [Stas]
  • add infrastructure for new ModPerl::Const constants and the first constant ModPerl::EXIT. [Stas]
  • re-implement ModPerl::Util::exit to use exception objects, so it's possible to detect exit called in eval context and call it again outside the eval context. [Stas]
  • add the perl interface for the new exception handling code (mod_perl, apache and apr methods will now throw exceptions with $@ being an object). New class APR::Error was added, to handle the exception objects with overload methods. Also added confess and croak equivalents of Carp's methods, since at the moment the Carp's ones don't work as is. The following perl and C methods have been renamed: modperl_apr_strerror => modperl_error_strerror APR::strerror => APR::Error::strerr
  • Stas
    • set the 'error-notes' table to the error message on HTTP_INTERNAL_SERVER_ERROR [Stas]
    • fix the apxs build function to not handle empty lookups as errors
  • Randy Kobes, Steve Hay
    • fix type casting problems in the io functions [Stas]
    • add support for libgtop 2.5.0+ (maintenance mode) [Stas]
    • APR::Socket::timeout_set now croaks on failure [Stas]
    • significantly speedup the startup of threaded mpm test suite, by configuring only the minimal number of perl interpreters to start
  • Stas
    • make APR::Socket::opt_(set|get) working (and change the previous behavior) [Stas]
    • make sure that our protocol module tests that interact with the socket use a blocking read [Joe Orton]
    • Use a better approach to figure out whether we need to strip perl's LargeFilesSource flag, by checking whether libapr was compiled with -D_FILE_OFFSET_BITS=64 or not. Checking for APR_HAS_LARGE_FILES is useless since it doesn't tell whether 32 vs 64 bits off_t and similar types are used [Joe Orton]
    • 'SetHandler perl-script' no longer grabs any newly encountered END blocks, and removes them from PL_endav, but only if they are explicitly registered via ModPerl::Global::special_list_register(END => $package_name) (this is a new function). It's now possible to have a complete control of when END blocks are run from the user space, not only in the registry handlers [Stas]
    • END blocks encountered by child processes and not hijacked by ModPerl::Global::special_list_register() are now executed at the server shutdown (previously they weren't executed at all). [Stas]
    • Added test to ensure <Perl> sections can have things like %Location tied [Gozer]
    • Fix the installation on Win32 so that an appropriate Apache2 subdirectory under the Perl tree is used when MP_INST_APACHE2 is specified [Randy Kobes]
    • Fix a redefined warning in Apache::Status [Stas]
    • Fix Apache::Status, to lookup the Apache::Request version without loading it. Only if a suitable (2.x) version is found -- load and use it. Previously loading the 1.x version was affecting Apache::compat.
  • Stas
    • Fix a bug in special blocks handling (like END), which until now was dropping on the floor all blocks but the last one (mainly affecting registry handlers). [Stas]
    • The filter streaming API print() function, now correctly handles a binary data [Stas]
    • Fix Registry handlers, not to lose the execution errors, when they include END blocks [Stas]

Changes for version 1.99_13

  • respect $ENV{APACHE_TEST_STARTUP_TIMEOUT} settings if any [Stas]
  • Added tests for issuing subrequests from filters [Geoffrey Young]
  • Updated to the new Apache License Version 2.0 [Gozer]
  • Drop the support for making GATEWAY_INTERFACE special. It's not needed as $ENV{MOD_PERL}, available in both mod_perl generations, should be used to test whether the code is running under mod_perl. [Stas]
  • Handle correctly the situation when response HTTP headers are printed from the handler and the response body starts with \000, which is the case with some images like .ico. [Stas]
  • Apache::PerlSections->dump() and store(filename) [Gozer]
  • expose $c->keepalive related constants and $c->keepalives counter
  • Stas
    • Perl handlers are now guaranteed to run before core C handlers for all request phases. [Geoffrey Young]
    • Fix the STDIN/OUT overriding process to handle gracefully cases, when either or both are closed/bogus (the problem was only with useperlio enabled perl) [Stas]
    • copy apr_table_compress logic from later httpd versions in case mod_perl is built against 2.0.46, as mod_perl now requires it internally. users should be aware that 2.0.47 may become the oldest supported httpd version in the near future. [Geoffrey Young]
    • Fix the corruption of the httpd process argv[0], caused by $0 manipulating [Stas]
    • ModPerl::MethodLookup::lookup_method now handles sub-classed objects
  • Stas
    • standard %ENV population with CGI variables and contents of the subprocess_env table (such as SetEnv and PassEnv) has been delayed until the last possible moment before content-generation runs. PerlSetEnv and PerlPassEnv are each an exception to this and are placed in both %ENV and the subprocess_env table immediately, regardless of the current [+-]SetupEnv setting.
  • Geoffrey Young
    • fix PerlAddVar configuration merging [Geoffrey Young]
    • Anonymous subs are now supported in push_handlers, set_handlers, add_input_filter, etc. A fast cached cv is used with non-ithreaded perl. A slower deparse/eval approach (via B::Deparse) is used with ithreads enabled perls. Further optimizations are planned for the latter case. [Stas]
    • ht_time w/o the pool is now available only via override/restore compat API. format_time, has been renamed back to ht_time, and the default values for fmt, time and gmt are now supported. [Stas]
    • it's now possible to push new handlers into the same phase that is running at the moment [Stas].
    • when $r->handler($new_handler) is called from a response phase, it now checks that the response handler type is not switched (e.g. from 'modperl' to 'perl-script') from the currently used one [Stas]
    • Since Apache::SubProcess is now part of the mp2 API, add $r->cleanup_for_exec as a noop in Apache::compat. That function is no longer needed in Apache2. [Stas]
    • When 'perl Makefile.PL PREFIX=/foo/bar' is used and mod_perl 1 is found, but at different prefix no longer require MP_INST_APACHE2=1. [Stas]
    • modperl_mgv_resolve now croaks when a module scheduled for autoloading fails to load. AutoLoaded modules shouldn't silently fail. [Stas]
    • Perl(Input|Output)FilterHandler handlers are now always AutoLoaded, as if '+' prefix was used. This must be performed to get the access to filter attributes long before the filter itself is executed. [Stas]
    • APR/Pool.xs has been reimplemented. The problem with the previous implementation is that a dead perl pool object could hijack a newly created pool, which didn't belong to that object, but which happened to be allocated at the same memory location. The problem is that apr_pool_user_data_set/get has no mechanism to check whether the pool has changed since it was last assigned to (it does but only in the debug mode). It really needs some signature mechanism which can be verified that the pool is still the same pool. Since apr_pool doesn't have this feature, the reference counting has been reimplemented using a plain sv reference. Several new (mainly hijacking) tests which badly fail with the previous impelementation have been added. [Stas]
    • fix calling $r->subprocess_env() in a void context so that it only populates %ENV if also called with no arguments. also, make sure it can be called more than once and still populate %ENV.
  • Geoffrey Young
    • add APR::Brigade::pool() to allow access to the pool associated with the brigade [Geoffrey Young]
    • make 't/TEST -startup_timeout secs' working (previously user's value was ignored) [Stas]
    • ModPerl::Registry and friends now support non-parsed headers scripts, whose filename =~ /^nph-/, identically to mod_cgi. + test [Stas]
    • implement APR::Brigade::length() and APR::Brigade::flatten() (the latter implements a wrapper for apr_brigade_flatten, but also includes an emulation of apr_brigade_pflatten) as [Geoffrey Young]
    • ($r|$s)->add_config() now die if failed (previously returned the error) [Stas]
    • fix context problems in <perl> sections and PerlModule/PerlLoadModule/PerlRequre under threaded mpms w/ PerlOptions +Parent/+Clone in Vhosts + TestVhost::config test. [Stas]
    • Implemented Apache::get_server_version and Apache::get_server_built as constant subroutines [Geoffrey Young]
    • Moved some functions out of the Apache:: namespace: Apache::unescape_url() is now Apache::URI::unescape_url() Apache::log_pid() is now Apache::Log::log_pid() Apache::LOG_MARK() is now Apache::Log::LOG_MARK()
  • Geoffrey Young
    • if MP_AP_PREFIX is used apxs and apr-config from the apache build tree won't work, so it can't co-exist with MP_APXS and MP_APR_CONFIG build options - ensure that this doesn't happen. [Stas]
    • server_root_relative() now requires either a valid pool or an $r, $s, or $c object as a first argument. also, the returned result is a copy, protecting against cases where the pool would go out of scope before the result. [Geoffrey Young]
    • Check the success of sysopen in tmpfile() in compat [Geoffrey Young]
    • make sure DynaLoader is loaded before XSLoader, not only with perl 5.6.1, but always because of the issues with <Perl> sections are loaded from +Parent vhost [Stas]
    • added ($r|$s)->is_perl_option_enabled($option_name), to test for PerlOptions + tests [Stas]
    • On Solaris add a workaround for xs/APR/APR/Makefile.PL to build APR.so, correctly linked against apr and apr-util libs, by addding the missing -R paths corresponding to -L flags. EU::MM was adding them via LD_RUN_PATH instead of using -R, but since perl's lddflags may have -R it overrides LD_RUN_PATH. So explicitly add anything that may go into LD_RUN_PATH via -R. Also make sure that -R coming from Apache will appear first. [Brad Lanam <bll@gentoo.com>]
    • 'make dist' now generates and picks Apache-Test/META.yml which was always reported missing, as it was included in Apache-Test/MANIFEST
  • Stas
    • fix the $r->read function to return undef on failure similar to the core perl function and make $! available for those who test for read() failures. [Stas]
    • Make sure that pnotes are destroyed after PerlCleanup handlers are finished and not before + test. [Stas]

Changes for version 1.99_12

  • Restore a proper behavior of all Registry handlers, but PerlRun, not to reset %INC to forget any .pl files required during the script's execution. [Stas]
  • <Perl> are now evaluating code into one distinct namespace per container, similar to ModPerl::Registry scripts. [Philippe M. Chiasson]
  • Fix ModPerl::MM::WriteMakefile to use the MODPERL_CCOPTS entry from Apache::BuildConfig, as it contains some flags added by mod_perl, which aren't in perl_ccopts and ap_ccopts. [Stas]
  • Add the implementation of Apache::Connection::local_addr and Apache::Connection::remote_addr to the Apache::compat overridable functions. [Stas]
  • Apache::compat's implementation of APR::URI::unparse, Apache::RequestRec::finfo and Apache::RequestRec::notes is now overridable and not enabled by default. [Stas]
  • Apache::compat no longer enables functions which collide with mp2 API by default. It provides two new functions: override_mp2_api and restore_mp2_api to override and restore the original mp2 API. [Stas]
  • For Win32, add a .bat extension to candidates for the apxs and apr-config utilities used in Apache::Build, so that the -x file test can potentially succeed [Randy Kobes]
  • Plug a memory leak with 'perl-script' not cleaning up the temp vars created during the override of STDIN/STDOUT to use the :Apache IO layer [Stas]
  • libgtop config (needed for enabling MOD_PERL_TRACE=m) is now searched using the gnome packaging tools if available (pkg-config for gnome-2.x and gnome-config for gnome-1.x) [Stas]
  • Prevent a problem where an autovivified package (stash) prevents from modperl_mgv to load the file with that package (until now it was checking whether the stash existed already and skipped the loading if that was the case). Now checking %INC and attempting to load the module. Reporting the failure only if the module has failed to load and the stash is not defined (so that it's possible to autovivify packages without loading them from an external file). [Stas]
  • MaxClients is now overridable from the t/TEST -maxclients command line option (it was hardcoded before). [Stas]
  • Postpone the allocation of the wbucket in filters till the moment it's needed (if at all). Since non-streaming filters aren't going to use that buffer, it's a waste to allocate/free it. [Stas]
  • Extend the autogenerated bug report to include information about installed modules of special interest (which may aid in understanding the bug report), such as CGI.pm, Apache::Request, LWP, etc. [Stas]
  • As the test suite keeps on growing, it takes longer time to startup. Change the main test suite timeout to 180 secs for threaded mpms and 120 secs for non-threaded ones. [Stas]
  • use plain malloc/free to allocate filter structs, since they could be invoked hundreds of times during a single request, causing huge memory demands if the memory is allocated from the pool, which gets destroyed only at the end of a request. [Stas]
  • Fix a compilation error in APX.xs when MP_HAVE_APR_LIBS is not defined
  • Fred Moyer <fred@taperfriendlymusic.org>
    • fix a memory leak when $filter->ctx is used [Stas]
    • fix buglet on Win32 (and potentially other non-Unix platforms) where not all files were being installed under a relative Apache2 subdirectory when MP_INST_APACHE2 was specified [Randy Kobes].
    • deprecated APR::SockAddr::port_get()/APR::SockAddr::port_set() replaced with direct access to the port record via APR::SockAddr::port(). [Geoffrey Young, Stas]
    • deprecated APR::URI::default_port_for_scheme() replaced with APR::URI::port_of_scheme() [Geoffrey Young]
    • deprecated APR::SockAddr::ip_set() and APR::NO_TIMEOUT removed.
  • Geoffrey Young
    • Apache::MPM->is_threaded() replaces Apache::MPM_IS_THREADED
  • Geoffrey Young
    • fix "PerlSetVar Foo 0" so that $r->dir_config('Foo') returns 0, not undef
  • Geoffrey Young
    • add Apache::MPM class, along with show() and query() class methods
  • Geoffrey Young
    • add :mpmq import tag to Apache::Const [Geoffrey Young]
    • Fix ModPerl::Registry handlers family to modify $0 only for the duration of the handler, by localizing it [Stas]
    • Fix :Apache perlio's STDOUT to be reentrant + modules/include_subreq test [Stas]
    • fix slurp_filename to always open the file and not try to guess whether filename has been already opened, as there is no reliable way to accomplish that [Stas]
    • Apache->can_stack_handlers is now in Apache::compat (mp2 always can stack handlers) [Stas]
    • add access to $r->finfo() and related APR::Finfo methods, such as $r->finfo->size(), $r->finfo->mtime(), and $r->finfo->stat() [Geoffrey Young]
    • add :filetype import tag to APR::Const [Geoffrey Young]
    • <Perl> sections now properly set $0 to the name of the configuration file they are in. [Philippe M. Chiasson]
    • Apache::Status: provide a workaround for Config::myconfig() which fails under threads with (5.8.0 < perl < 5.8.3) [Elizabeth Mattijsen <liz@dijkmat.nl>]
    • Fix Apache::Status::handler to return 'Apache::OK' [Juanma Barranquero <lektu@terra.es>]
    • <Perl> sections now properly set filename and line number information, making error messages report the correct location. [Philippe M. Chiasson]

Changes for version 1.99_11

  • add a build/win32_fetch_apxs script (called within the top-level Makefile.PL) to offer to fetch and install a Win32 development version of apxs and (apr|apu)-config [Randy Kobes]
  • rewrite $r->read() and perlio read functions to use the same function, which completely satisfies the read request if possible, on the way getting rid of get_client_block and its supporting functions which have problems and will most likely will be removed from the httpd-API in the future. Directly manipulate bucket brigades instead. [Stas]
  • Since Apache2.pm pops /foo/Apache2 dirs to the top of @INC, it now also takes care of keeping lib and blib dirs before the system dirs, so that previously installed libraries won't get loaded instead of the currently uninstalled libraries that are under test. [Stas]
  • When 'make test' fails we now print the info on what to do next [Stas]
  • At the end of 'make install' we now print the info how to proceed with mod_perl and what to do in the case of post-install problems
  • Geoffrey Young
    • Adjust the source to properly work with 5.8.2's new algorithm of dynamic re-hashing of hashes on hash collision attack. [Nicholas Clark <nick@ccl4.org>, Stas]. Add a test that mounts such an attack so we can verify that we can survive this rehashing. [Scott A Crosby <scrosby@cs.rice.edu>, Nicholas Clark <nick@ccl4.org>, Tels <perl_dummy@bloodgate.com>, Mark Jason Dominus <mjd@plover.com>, Stas]
    • Standardize the Apache::PerlSections package name to it's plural form for clarity and so that the pod gets glued in it's proper place.
  • Philippe M. Chiasson <gozer@cpan.org>
    • return value from Perl callbacks are now passed directly to Apache without additional post-call manipulations (such as assuming HTTP_OK should really be OK). [Geoffrey Young]
    • perl 5.8.1 w/ ithreads has a bug where it reports the wrong parent pid (as if the process was never forked), provide a local workaround (+ new test). [Rafael Garcia-Suarez <rgarciasuarez@free.fr>]
    • overridden STD* streams now can be further overridden and will be properly restored, which allows functions like $r->internal_redirect work (+add tests) [Stas]
    • implement perlio's getarg hook, which now allows duping STD* streams overloaded by modperl [Stas]
    • Add PerlMapToStorageHandler [Geoffrey Young]
    • callbacks are now expected to return a meaningful value (OK, SERVER_ERROR, etc) or return via an official API (exit, die, etc). relying on implicit returns from the last call evaluated by a subroutine may result in server errors. [Stas, Geoffrey Young]
    • in the MP_MAINTAINER mode add the -Werror compilation flag when perl

Documentation

Apache::Test change logfile
APR
Perl Interface for Apache Portable Runtime (libapr and libaprutil Libraries)
Perl API for APR base64 encoding/decoding functionality
Perl API for manipulating APR Bucket Brigades
Perl API for manipulating APR Buckets
Perl API for apr_bucket_alloc_t
Perl API for APR bucket types
Perl Interface for APR Constants
Perl API for APR date manipulating functions
Perl API for APR/Apache/mod_perl exceptions
Perl API for APR fileinfo structure
Perl API for accessing APRs ip_subnet structures
Perl API for Platform-specific APR API
Perl IO layer for APR
Perl API for APR pools
Perl API for APR socket address structure
Perl API for APR sockets
Perl API for manipulating APR opaque string-content tables
Perl API for APR thread mutexES
Perl API for URI manipulations
Perl API for Various APR Utilities
A ghost mod_perl 2.0 class
A Perl API for Apache request object: Access, Authentication and Authorization.
Perl API for Apache command parameters object
Perl API for accessing Apache module command information
Perl API for Apache connection object
Perl Interface for Apache Constants
Perl API for manipulating Apache configuration tree
Perl API for Apache 2.0 Filtering
Perl API for manipulating the Apache filter record
Perl API for Invoking Apache HTTP phases
Perl API for Apache Logging Methods
Perl API for creating and working with Apache modules
Default Handler for Perl sections
Perl API for Apache process record
Reload Perl Modules when Changed on Disk
Perl API for Apache request record IO
Perl API for Apache request record accessors
Perl API for Apache request record utils
Perl API for Apache HTTP request response methods
Perl API for Apache server record accessors
Perl API for Apache server record utils
Embedded interpreter status information
Executing SubProcesses under mod_perl
Perl API for Apache subrequests
Perl API for manipulating URIs
Perl API for Misc Apache Utility functions
1.0 backward compatibility functions deprecated in 2.0
a helper module for mod_perl 1.0 to mod_perl 2.0 porting
A "subclass" of ModPerl::MM used for building mod_perl 2.0
ModPerl Constants
Perl API for manipulating special Perl lists
A "subclass" of ExtUtils::MakeMaker for mod_perl 2.0
Lookup mod_perl 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 Functions
Multi-Processing Model Modules
A

Modules

Test.pm wrapper with helpers for testing Apache
Configuration file for Apache::Test
Subclass of Module::Build to support Apache::Test
Provide MakeMaker Wrapper Methods
A parent class for generating bug/success reports
Send requests to your Apache test server
Run the test suite
Run mod_perl-requiring Test Suite
Special Tests Sequence Failure Finder
Helper output generation functions
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
scan C language files for easily recognized constructs.
Functions to retrieve mod_perl specific env information.
Embed a Perl interpreter in the Apache/2.x HTTP server

Provides

APR
in xs/APR/APR/APR.pm
in xs/APR/Const/Const.pm
in xs/tables/current/APR/FunctionTable.pm
in xs/APR/PerlIO/PerlIO.pm
in lib/APR/XSLoader.pm
in lib/Apache/compat.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/PerlSections.pm
in lib/Apache/PerlSections/Dump.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 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/TestConfig.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/TestReportPerl.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 lib/Apache/compat.pm
in lib/Apache/XSLoader.pm
in lib/Apache/compat.pm
in lib/Apache/porting.pm
in lib/ModPerl/CScan.pm
in Apache-Test/lib/Apache/TestRequest.pm
in lib/ModPerl/BuildMM.pm
in lib/ModPerl/BuildOptions.pm
in lib/ModPerl/Code.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/TestReport.pm
in lib/ModPerl/TestRun.pm
in lib/ModPerl/TypeMap.pm
in lib/ModPerl/WrapXS.pm
in ModPerl-Registry/t/cgi-bin/perlrun_decl.pm
in Apache-Test/lib/Apache/Test5005compat.pm