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

ACKNOWLEDGEMENTS

Extra Thanks to:

Andreas Koenig <andreas.koenig@franz.ww.tu-berlin.de> for *lots* of bug spotting, fixing and patching, Apache::Registry and CGI.pm overhaul efforts (aka CGI::XA & CGI::Switch)

Gisle Aas <aas@sn.no> For getting this effort started and many contributions since

Other contributors are mentioned below.

CHANGES

0.87

As suggested by Andreas, Makefile.PL now asks: "Configure mod_perl with ../apache_xxx ?" answering 'y' only means there is where we can find *.h "Shall I build httpd in $adir for you?" answering 'y' will run ../apache_xxx/Configure and httpd will be built when running 'make'

$r->read now returns $nrd as it should

'perl Makefile.PL NO_HTTPD=1' will build only the perl side of mod_perl (still need httpd.h for Constants.sl)

'make test' now picks up modules in ./blib as it should, bug spotted by Mike Stok

ServerName is set to localhost in httpd.conf as suggested by Mike Stok and Frank Cringle

0.86

Port is a little more random for tests '8529'

applied patch from Edmund Mergl <E.Mergl@BAWUE.DE> bringing CGI::XA up-to-date with CGI.pm 2.29

perl_destruct_level is set to 0 in mod_perl.c, while progress is being made on fixing perl_{con,des}truct in 5.003_12

if there is no httpd.conf, Makefile.PL creates one for you, filling in User and Group with uid and gid of the current process

updated Makefile.tmpl-1.2 with Makefile.tmpl from apache 1.2b2

if Makefile.PL finds apache version >= 1.2b3, instead of copying Makefile.tmpl to ../src/apache_x.x, it uses the new '-make Makefile.tmpl' option, made possible by Rob Hartill otherwise, same as before and it now tells you it's made a backup 'Makefile.tmpl.bak'

fixed 'make test', so you _really_ don't have to modify anything, hopefully

if libwww-perl is not installed, the tests that require it will not be run, and it will be suggested that you install the library, but who doesn't have libwww-perl installed???

0.85_06

same as 0.85_05, just fixed broken tarball

0.85_05

fixed Makefile.PL bug spotted by Gary Shea <shea@XMISSION.COM>

applied XA.pm fix from Edmund Mergl <E.Mergl@BAWUE.DE>

updated docs and examples here and there

'make test' improved, all uneeded directives and files stripped out, should be able to run with no modification, nothing by hand other than 'make test'

now make sure that CC we use to build httpd is the same as CC used to build Perl, thanks to Andreas

added 'make offsite-tar' target for build the perl-side on machines without apache source

fixed Makefile.tmpl* so people define EXTRA_FLAGS as suggested by Rob Hartill

a few minor fixes for Apache-SSL users

0.85_04

applied patch from Rob Hartill to fix bug in $r->cgi_env

%ENV is cleared after each callback (&Perl*Handler)

added $r->cgi_var as suggested by Andreas: calls $r->cgi_env($key) in a scalar context to prevent the mistake of calling in a list context.

if a Perl*Handler returns something > 600 we assume OK (for now)

bug fixed introduced in 0.85_03 for Perl*Handler's not prefixed with a Package:: causing httpd to sigsegv

ship with Makefile.tmpl-Ben-SSL for Apache-SSL users

Makefile.PL a little smarter -knows if we're configuring with Ben-SSL, uses Makefile.tmpl-Ben-SSL -after looking for 1.1.1 and 1.2*, globs for <apache*> not <apache_*> -instead of rm -rf'ing the modules/perl/ directory we're configuring against, we only rm -f those found in our MANIFEST

applied patch from Frank Cringle <fdc@CLIWE.PING.DE> to fix defaults in CGI::XA

got rid of stupid warning "missing test.pl"

0.85_03

cleaned up internal perl_setup_env()

Perl*Handler's default to calling Perl*Handler::handler if the Perl*Handler is just a class name, e.g. 'PerlHandler Apache::Registry' will call Apache::Registry::handler In addition, the class module will be loaded if it is not already, so there is no need to specify PerlModule

added Apache::Status module

$r->print now sets a hard_timeout() before sending to the client $r->read now sets a hard_timeout() before reading from the client

added $r->soft_timeout, $r->hard_timeout, $r->kill_timeout and $r->reset_timeout methods

top-level Makefile.PL looks further for apache_x.x/src/ prompts you if nothing found

applied fix from Andreas to s/privlib/privlibexp/ in src/modules/perl/Makefile

applied patch from Rob Hartill <robh@imdb.com> to correctly initialize cld->sendheader and cld->setup_env

0.85_02

Apache::DBIAuthen renamed Apache::AuthenDBI and split out from Apache::Authen

Apache::Authen->handler renamed Apache::Authen->check as it is not a handler, only used by handlers

added ToDo file

updated UserGuide, now called 'mod_perl.pod'

updated INSTALL and README docs

perl_init will only perl_alloc and perl_contstruct once when the server starts, meaning no more mad leaks when server is restarted

modified test suite adding extra tests for sfio and TIEHANDLE

unless Perl was configured to use perlio and sfio, STDOUT is tied by default to the client, no more need for tie *STDOUT => Apache::TieHandle

Makefile.PL now looks for ../apache_1.1.1/src/, apache_1.2*/src/ to configure against

Fixed Makefile.PL bug spotted by Frank Cringle <fdc@CLIWE.PING.DE>, when no apache source was present or chosen to configure against

'make clean' will now cd $(APACHE_SRC) && $(MAKE) clean

applied patch from Rob Hartill <robh@imdb.com> to bring us up-to-date with apache_1.2b0

$r->content now calls $r->read instead of $r->read_client_block

$r->read is no longer an alias for $r->read_client_block The new $r->read implementation is based on patches and ideas from Milan Votava <ms.anet.cz@MS.ANET.CZ>, Joonsuk Bae <bae@yahoo.com>, and Gisle

0.85_01

added 'tar_Apache' target for copying the perl-side of mod_perl to other machines without dragging the apache-side along.

'perl Makefile.PL' now Configures Apache to link mod_perl if ../apache_1.2-dev or ../apache_1.1.1 src/Configuration is found In addition, 'apache_httpd' is added to the 'make all' target

now include Makefile.tmpl-1.2

fix for 1.2's const requirement

0.85

added the start of a mod_perl test suite

got rid of conditional perl*rec members, which was causing compile problems for some people

$r->exit now logs transactions before exit()'ing the process

applied clean-up and debug enhancement patch to Apache::Registry from Andreas

applied patch from Andreas to reduce Apache->request calls in Apache::CGI

$r->cgi_env now accepts arguments for setting variables

0.84 - October 27, 1996

added pointer to Patrick Kane's <modus@enews.com> FAQ

applied Makefile.PL patches from Gisle

0.83_10

send_cgi_header now sets $r->status to REDIRECT when it finds a Location header which is not an internal redirect

Apache::Registry now returns $r->status rather than always OK

dropped old approach of the original mod_perl.c, mod_perl_fast functionality has moved to the all-knowing, all-doing mod_perl

Makefile.PL for Apache::Constants looks for httpd.h in ../../apache*/src/ before prompting

dropped OK from @{$Apache::Constants::EXPORT_TAGS{response_codes}}

updated Constants.xs with patch from Gisle

applied Makefile.PL patch from Gisle to set PERL= in Makefile*

0.83_09

fixed bug with get_basic_auth_pw spotted by Patrick Kane <modus@enews.com>

0.83_08

get_basic_auth_pw now returns the $send_pw, rather that setting it, see Apache.pm docs

applied patch from Andreas with the following changes:

1) regex directory added in Constants/Makefile.PL. Current apache always needs -Iregex, that means for us an additional -I$httpd/regex. I think, they should

    #include <regex/something.h>

2) Assorted comments added to INSTALL, especially

  * FileHandle bug explained as being a 5.003 bug (not "current")

  * Configuration/Configuration.tmpl relation explained

  * && instead of ; to separate commands is a must in Makefiles

  * Gisle's hint about the default seems very important to me, so is
    there again.

3) Drops the deprecated mod_alias patch from the whole distribution

4) A whitespace patch for src/modules/perl/Makefile

5) The regex directory also for src/modules/perl/Makefile

6) Shuffling of code between mod_perl_fast.c and mod_perl.h until it fits the bill, who knows why :-0

0.83_07

added the missing src/modules/perl/Makefile (again)

0.83_06

brought back Makefile.tmpl for current public release

added src/modules/perl/ldopts script, rather than using 'make ldopts'

INSTALL doc fix so 1.1.1 users define RANLIB

MODULE_MAGIC_NUMBER fix so we still build with 1.1.1

no longer pstrdup when fetching r->args

dropped undocumented SKIP_AUTH_HEADER thingy

0.83_05

added missing Makefile to src/modules/perl/

turned off PERL_TRACE, oops

moved SERVER_VERSION from Apache.xs to Constants.xs

applied another doc patch to Apache.pm from Gisle

0.83_04

updated INSTALL and UsersGuide documents

misc cleanup here and there

Apache::Options is now just a stub that imports from Apache::Constants

updated Apache.pm and Apache::Constants documentation

added Apache::AuthzAge and Apache::AccessLimitNum modules

added $r->requires and $r->is_main, and $r->main methods

added callback hooks for authorization, access, type-check, fixup and logger stages of the request

callback hooks can now be turned off at compile time with -DNO_PERL_...., and are turned off by default, except for the handler stage (PerlHandler)

reworked installation procedure to follow apache 1.2 recomendations, the procedure will still work with older versions of apache. No more Makefile.tmpl.x.x.x mess!!

updated #if MODULE_MAGIC_NUMBERS >='s so we're inline with apache 1.2-dev-19961009130008

0.83_03

Perl*Handler's are now called with Apache->request as an argument PerlHandler's may still ask for Apache->request so existing code and mechanisms such as Apache::Registry will continue to work However, other handlers such as PerlAuthenHandler and PerlTransHandler, cannot use Apache->request.

added Apache::Constants module, based on patch to Apache.xs from Gisle

updated Apache::Debug with patch from Gisle to - update the status codes from the latest HTTP::Status and produce a prettier and more output.

- We also ensure that we do not generate output for HEAD requests and we set up status correctly.

updated Apache.pm and Apache::Options docs, thanks to Gisle

fixed PerlScript bug spotted by Gisle

renamed Apache::Msql to Apache::MsqlProxy

0.83_02

bug patch to Apache::Registry from Andreas

0.83_01

minor clean-up

fixed port and query_string related bugs in Apache::Msql example

applied patch from Salvador Garcia <sortiz@cfe.gob.mx> to fix PerlTransHandler bugs spotted by Hugues Lafarge <Hugues.Lafarge@afp.com>

applied Apache::Registry patch from Andreas - allows filanames to start with a digit (you probably saw a "bad symbol after ::" error)

- strips path_info before deciding which package the script is compiled into.

*developer's release* release 0.83 - September 12, 1996

added Apache::Msql module

added $r->handler method

added $r->proxyreq method

added PerlTransHandler directive

minor clean-up

*developer's test* release 0.82 - September 11, 1996

added Apache::Authen and Apache::AuthenDBI modules

added $r->get_basic_auth_pw method

added $r->note_basic_auth_failure method

added PerlAuthHandler directive

added $r->dir_config method

added PerlSetVar directive

we now have mod_perl.h

fix for using mod_perl_fast with Apache-SSL

release 0.81 - September 08, 1996

added Apache::CGI->exit method as suggested by Andreas

items needed for 1.2 are now conditional using MODULE_MAGIC_NUMBER

included Makefile.tmpl.1.2

release 0.80 - September 06, 1996

fix so we can send $strings of binary data to the client

fix so we can log bytes sent

added Andreas' CGI::XA kit for users of CGI.pm + mod_perl_fast

added PerlSetupEnv directive

added PerlSendHeader directive

we now take advantage of Perl's new IO abstraction so STDIN and STDOUT are hooked up to the client. Thanks to Sven Verdoolaege <skimo@breughel.ufsia.ac.be> for the initial patch

added $r->connection->close method

added $r->exit method

applied patch from Rob Hartill <robh@imdb.com> so read_client_block works with apache-1.2 changes

updated UsersGuide to suggest using configuration that does not require patching mod_alias.c, thanks to Rob Hartill <robh@imdb.com>

added $r->method_number method

$r->method() now accepts an argument to change the request method (for things like internal re-directs)

added send_cgi_header method

added internal_redirect_handler method

applied NeXT fix from Andreas

applied patch from Andreas to fix eval error line number in Apache::Registry

changed Changes file so it can be read with 'perldoc Changes'

release 0.76b2 - August 16, 1996

updated Apache::CGI, now requires CGI.pm 2.22+

#undef pregcomp to fix namespace clash with Apache 1.2

added (placeholder for) PerlSetVar directive (need to think about it some more)

applied patch from Andreas Koenig <andreas.koenig@franz.ww.tu-berlin.de> to fix bug introduced with perl5.003_01 + IRIX combo

release 0.76b1 - July 26, 1996

included Sven Verdoolaege's (experimental) patch for minimal TIEHANDLE support, so we can tie *STDOUT, 'print' instead of '$r->print' that is.

added (experimental) Apache::TieHandle module

included Chip Salzenberg's FileHandle.pm patch

added UsersGuide document

if no PerlHandler is defined we fail with a SERVER_ERROR

Apache::Registry now checks to make sure uri is not a directory

applied Apache::Registry patch from Andreas for minor clean-up and an extra error check

release 0.75a1 - July 21, 1996

added Apache::Registry module contributed by Andreas Koenig <andreas.koenig@franz.ww.tu-berlin.de>

Apache::SSI now checks ExecCGI option before doing an 'exec'

included patch for mod_alias.c to allow for PerlAlias directive

added allow_options and is_perlaliased methods to Apache.pm

added Apache::Options module

added Apache::Debug module

applied patch from Andreas Koenig <andreas.koenig@franz.ww.tu-berlin.de> to -fake up a PerlScript if one is not specified -ITERATE over PerlModule directive so it will accept multiple modules -no longer store request_rec in $Apache::Request we now require ExtUtils::Embed as it has been re-named for the standard perl distribution as of 5.003_01

release 0.71b1 - July 19, 1996

added PERL_CCFLAGS to Makefile.tmpl as suggested by Lincoln Stein <lstein@genome.wi.mit.edu>

subroutines no longer need to return '0' for OK status, 200 and 1 are 'OK' too.

added 'PerlHandler' as replacement for 'PerlResponse', seems like a more appropriate name after Salvador's 'AddHandler' suggestion

added item to the handler_rec so we can say 'AddHandler' Thanks to Salvador Garcia <sortiz@cfe.gob.mx>

fixed bug with storing 'PerlModule's read from srm.conf Thanks to Salvador Garcia <sortiz@cfe.gob.mx> for the spot and helping with the fix more Makefile.tmpl fixes from Andreas Koenig <andreas.koenig@franz.ww.tu-berlin.de>

release 0.70b1 - July 14, 1996

applied patches from Andreas Koenig <andreas.koenig@franz.ww.tu-berlin.de> to fix Makefile.tmpl bug, NeXT define troubles, typos and documentation clean-up

Added Apache::SSI module for server side includes

Added 'PerlModule' directive for loading modules in srm.conf

fixed read_client_block bug that was causing trailing garbage to show up n the client for some people. Thanks to Alan Beale <agb@openplus.co.uk> for the fix.

release 0.60a5 - June 25, 1996

fixed bug in mod_perl_fast that was causing bizarre problems for some people

release 0.60a4 - June 18, 1996

dropped content and args methods from Apache.xs, moved to Apache.pm The xs implementation was causing problems for some people

added Apache::unescape_url function

added $r->header_in method

release 0.60a3 - June 17, 1996

Added read() alias for read_client_block

Updated Makefile.tmpl to use the renamed ExtUtils::embed

Fixed various small bugs that were causing big problems

pid $$ now set in mod_perl_fast, thanks to Alan Beale <agb@openplus.co.uk>

Added basic_http_header() method

release 0.60a2 - May 21, 1996

fixed bug in mod_perl_fast.c the caused problems with $r->content and $r->args

Added Apache::CGI module for those who use CGI.pm

There's now a Makefile.PL (currently for installing perl-only modules).

release 0.60a1 - May 18, 1996

Started getting ready for optional Safe wrapper around scripts

Added $r->get_remote_host() method, putting $r->connection->remote_host back to normal

release 0.50a2 - May 9, 1996

new (faster) approach with mod_perl_fast Thanks to John Detloff <detloff@arizona.edu> for friendly error checking code.

we now use an Apache.pm file

moved more code from mod_perl to Apache.xs so mod_perl_fast could share it

rganized Apache.xs

fixed $r->connection->remote_host

hiding of 'Authorization' header is optional now

added 'print' alias to 'write_client'

dropped set_ prefix for several methods

release 0.50a1 - May 1, 1996

xs_init now gets linked with us, as generated by Devel::embed so we can bootstrap static extensions (including Apache)

stomped out *main:: variables, moved to Apache.xs as methods

added method 'request' to return the request pointer object And did a typedef request_rec * Apache so we don't need to say @request_recPtr::ISA = 'Apache'; anymore

added method 'write_client' for sending a @list of data to the client

added methods that simply access members of request_rec -method -uri -protocol -path_info -filename

added method 'args' when called in a scalar context, it returns the query string when called in a list context, it splits the query_string into key => vairs

moved parsing code to Apache.xs, and now data is only read when the user asks for it with the content() method.

added method 'content' when called in a scalar context, it reads data from the client when called in a list context, it splits the content into key => vairs

added method 'headers_in' to return a %hash of request headers the 'Authentication' header is not returned

added perl_call_argv to Apache->bootstrap ourselves

we now flush the script's %ENV users can set-up a standard CGI %ENV via method $r->cgi_vars

the script's STDERR in now redirected to the error_log

added client_to_stdout and client_to_stdin methods to hookup the script's STDOUT and STDIN ** This is broken right now **

added method 'connection' and Apache::Connection class returns a object reference to the request_rec's conn_rec methods availible include:

 - remote_host
 - remote_ip
 - remote_logname
 - remote_user
 - auth_type

added method 'server' and Apache::Server class returns a object reference to the request_rec's server_rec methods availible include:

 - server_admin
 - server_host
 - port

Changes for Apache 1.1x -rprintf to bputs, etc.

March 25, 1996

Initial version of mod_perl.c and perl_glue.xs by Gisle Aas <aas@oslonett.no> Thanks for getting this started Gisle!