=head1 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.

=head1 CHANGES

=over 3

=item 1.00 - 07/28/97 

some 1.3a1 compatible things:
- mod_perl is now a dll under win32 
(Extra thanks to Gurusamy Sarathy for fixing Perl so this works)
- cope with limit() -> limit_section() rename
- API_EXPORT perl_call_handler and perl_stdout2client for mod_include/win32
- added win32 dirent.h kludge to workaround conflict(s) between perl's
  dirent.h apache's readdir.h  
- -Wall clean again

added new sub request methods:
- lookup_uri (sub_req_lookup_uri)
- lookup_file (sub_req_lookup_file)
The returned request_rec * is blessed into the `Apache::SubRequest'
class so destroy_sub_req() is called automatically during DESTROY
- the run_sub_req() function is available in this class as the run() method 

added patched Makefile.tmpl-Xcert from Vivek Khera to support XCert's Stronghold Sentry

$r->cgi_header_out should do case-insensive checks, 
bug spotted by Ralf Engelschall

eval { bootstrap Apache::Constants } so perl -c works outside of httpd

added `PerlChildExitHandler' callback hook (requires 1.3a2-dev or higher)

added `PerlChildInitHandler' callback hook (requires 1.3a1 or higher)

don't enable PERL_SECTIONS or PERL_SSI unless apache version >= 1.2.0
thanks to hint from Vivek Khera

removed Makefile-1.2 (don't need one anymore!)

removed Apache->connection->close method which _nobody_ should still have
their code  (it has produced a warning since 0.93_01 - 03/04/97)

added Apache->connection methods local_addr() and remote_addr() thanks to
Eric James Negaard 

applied patch from Hakan Tandogan so mod_perl's Makefile picks up SSL_INCLUDE

fixed chdir/current dir bug in Apache::Registry thanks to Joel Wagner

=item 1.00b2 - 07/07/97

fixed scoping bug in Apache::Registry spotted by Marshall Dudley

append LockFile to t/conf/httpd.conf if SERVER_VERSION >= 1.2.1

add ''s for CC='$(CC)' workaround for bug spotted by David Lloyd and others

added Apache::Debug->import so 'use Apache::Debug level => 4' will:
-level sets $Apache::Registry::Debug
-define UNIVERSAL::AUTOLOAD to stop spinning when undefined sub is called
-Carp::confess instead of die()
-allocate $^M if $Config{cflags} =~ /EMERGENCY_SBRK/

croak() if should_client_block() to prevent spin into "Out of memory!"

make compatible with 1.2.1 r->read_length change so we don't hang
on file uploads

can't run 'make test' as root with 1.2.1, if user `nobody' exists,
use that, otherwise prompt user for `User' and `Group' as suggested by
Michael Parker   

Andrew Tennant reported that `PassEnv' didn't work.
we now turn off %ENV magic when clearing %ENV so it does work

win32 stuff:
-include handy patch for modules.c as there's no win32 Configure script yet
-fixed mod_perl.h mutex #define broken-ness

the following will now work as expected (building {Apache,Constants}.s[ol]):
 perl Makefile.PL NO_HTTPD=1 DYNAMIC=1 && make
thanks to hints from Bowen Dwelle

added Makefile.PL option where 'perl Makefile.PL EVERYTHING=1'
will enable all features:
ALL_HOOKS, PERL_SECTIONS, PERL_STACKED_HANDLERS, PERL_METHOD_HANDLERS, PERL_SSI

fixed cgi_to_mod_perl.pod mess

added AIX note from Eric Bartley to the INSTALL doc

=item 1.00b1 - 06/29/97

turning off $^W in Apache::Registry when using Cwd to avoid
'use of uninitialized variable' warning

added Apache::DESTROY to shutup AutoLoader compliants spotted by Tim Newsome 

Constants.pm:
-added constant for DONE (included with export tag ':common')
-removed constants for DYNAMIC_MODULE_LIMIT, HUGE_STRING_LEN,
 MAX_HEADERS, MAX_STRING_LEN, METHODS

added benchmark/ directory with benchmarking examples

added pointers to Mike Stok's FAQ mirrors

added short-n-simple cgi_to_mod_perl document

fixed various Makefile.PL w/Stronghold bugs spotted Vivek Khera and Ted Corning
- PERL_SSI=1 will work (and add -DAPACHE_SSL)
- Makefile.tmpl is fixed up so mod_perl/x.xx is added to Server:
- 'make test' will pause (sleep 2) between starting httpsd and running the tests

swap link order of Makefile.tmpl for Stronghold, regardless of version,
thanks to Ted Corning

perl_clear_env() will now leave $ENV{TZ} in place to 
cure bug with hpux 9.04 spotted and suggested fix from
1Lt. Samuel S. Tai 

Apache::Registry will now 'chdir dirname $r->filename' before the 
script/subroutine is compiled so 'use Foo' can find Foo.pm in '.'
bug spotted by Janne Himanka

win32 port:
-added INSTALL.win32
-added src/modules/perl/mod_perl.mak
-tweaked Makefile.PL:
  -does not try to build httpd 
  -generates perlxsi.c, Apache.c, Constants.c (since we use mod_perl.mak)
-Apache::Registry does not test '-x $filename' if $Is_Win32 
-wrap callbacks in a mutex lock/unlock

applied patch from Eric Bartley to fix Apache::Include

change Apache::Registry behavior back to returing $r->status instead of OK

=item 0.99

added DO_HTTPD option to avoid configuration prompts, suggested by
Michael Alan Dorman 

only build Constants.s[ol] with DYNAMIC=1

swap link order in Makefile.tmpl for Stronghold as we did for b11
thanks to Ted Corning for spotting

applied patch from Rob so 'make tar_Apache' creates the tarball in $PWD

@Lists in <Perl> sections can now deal with TAKE2, TAKE23, TAKE3, etc.

updated FAQ pointers to Frank's new version

Apache::Registry will return OK instead of $r->status, suggested by Owen Scott Medd

skip t/constants/export test on platforms that don't support dl

removed Apache::CGI stub

removed alias for Apache::CGI::exit and Apache::TieHandle::TIEHANDLE

cleanup up Makefile.PL, no longer support 1.2bx's

another patch applied from Alexander Demenshin who found av_undef
does not take care of everything, we must SvREFCNT_dec too!

fix bug with PERL_METHOD_HANDLERS spotted by Eric Bartley

=item 0.98_12

applied patch from Alexander Demenshin <aldem@techie.com> to plug
leaks in perl_{stdout,stdin}2client

can now say 'perl Makefile.PL PERL_SSI=1' to enable mod_include stuff

the link order of apache 1.2b12-dev has been switched back to the way
it was in b10, now we only have to muck with Makefile.tmpl if $Is_b11

once again, ensure CGI.pm knows GATEWAY_INTERFACE if it is use'd in a
PerlScript, thanks to Tom Hughes for spotting this

removed trick to make `require Apache::TieHandle' a noop, *nobody*
should still have that in any code, if so, sorry, get rid of it!

inspired by Pai-Ling Hsiao, added tiny Apache::Include module so the
mod_include <--!#perl directive can take advantage of
Apache::Registry, like so: 

 <!--#perl sub="Apache::Include" arg="/perl/ssi.pl" -->

added $r->translate_name method to run translate handlers

fix Apache::Status so it sends http headers!  spotted by Mike Stok

have cgi.t skip it's tests if CGI.pm is not installed, for Rob, the
only person in the whole world who doesn't have CGI.pm installed ;-)

s/make/$(MAKE)/ for 'make test_report' thanks to Tom Hughes 

=item 0.98_11

switch Apache::parse_args behavior back to pre-0.98_09

=item 0.98_10

if mod_php is in Configuration, keep Makefile.tmpl link order as is,
and set Rule WANTHSREGEX=no

removed `BrowserMatch' from t/conf/httpd.conf

can now 'make test' without needing to run 'make' first

get rid of Manifest warnings during 'perl Makefile.PL'

reset $/ to "\n" after each request (t/net/test will test this)

set $ENV{GATEWAY_INTERFACE} before perl_run() so it's set for
server startup PerlScript's

=item 0.98_09

fixed bug in Apache::perl_hook('Access') spotted by Eric Bartley

applied patch from Peter Levart <Peter.Levart@SELECT-TECH.SI>
to make Apache::parse_args more reliable

if using Perl 5.003, use system cp since File::Copy is broken, 
bug spotted by Rob

switch link order in Makefile.tmpl back to what it was in b10 (tmp workaround):
s/$(LIBS) $(REGLIB)/$(REGLIB) $(LIBS)/
Thanks to hint from Mike Fletcher

=item 0.98_08

added 'make test_report'

=item 0.98_07

STATIC=1 is the default now, you make choose DYNAMIC=1

force STATIC=1 if $Config{osname} =~ /svr4/; #unixware

documented mod_perl+mod_include integration in mod_perl.pod

Constants.xs will now make due if SERVER_SUBVERSION is not defined

still build Constants.s[ol] even if we've configured with STATIC=1

=item 0.98_06

smoothed out Stronghold configuration bumps with help from 
Ted Corning <ted@newscorp.com>.  (see updated INSTALL)

documented <Perl> sections in mod_perl.pod

added eg/perl_sections.txt from Rob

=item 0.98_05

applied fix from Brian Millett so Makefile.PL can deal with Ben-SSL-1.2

applied patch from Rob to quiet -Wall in new PERL_SECTION code

=item 0.98_04

added BSDI dynamic loading notes from Gary Shea <shea@xmission.com> to
the INSTALL doc 

added PRINTF method (again!) for tie'd STDOUT, spotted by Kristina Helen Long

the following stuff now works inside <Perl></Perl> sections:
- %VirtualHost, %Files and %Directory 
- implemented <Limit GET POST> sections like so:
$Location{"/~dougm/"} = {
    AuthUserFile => '/tmp/htpasswd',
    AuthType => 'Basic',
    AuthName => 'Homepage',
    Limit => {
	METHODS => 'GET POST',
	require => 'user dougm',
    },
};
- `PerlModule' configuration directive

set $SIG{PIPE} = 'IGNORE'; when the server starts to avoid hosing when:
 `Apache->print lost connection to client'
thanks to Aaron Flin for the tip

=item 0.98_03 - 05/19/97

construct Perl interperter the first time perl_startup is called
rather than the second:
-slapped self upside head wondering why I did not do this before
-now -DAPACHE_SSL for Stronghold or Ben-SSL does not matter
-<Perl></Perl> sections work again
-ugly avoid_first_alloc_hack is gone!
 
added `ENVIRONMENT' section to mod_perl.pod

added `PerlSetEnv' configuration directive

back to only PerlHandler enabled by default 

if STATIC=1 is configured during 'perl Makefile.PL', Apache::Constants
will also be linked static.  This is the default on aix and bsdos.

$r->register_cleanup will now save a pointer to the request_rec
rather than doing it in PerlTransHandler

applied patch from Martin Pool <m.pool@pharos.com.au> so we see the real
line number if something goes wrong in an Apache::Registry script

now add -I./ and -I$Config{archlibexp}/CORE to EXTRA_CFLAGS for
mod_include integration

=item 0.98_02

$r->send_http_header now resets $r->status to 200 after calling
send_http_header() to squash double header w/ Location: bug 
spotted by Jonathan Lieberman

added $r->cgi_header_out so we can _really_ send headers the way
mod_cgi does (e.g. Set-Cookie bug spotted by Jonathan Lieberman)

=item 0.98_01

made room for args in perl_call_handler() for mod_include integration
in the future, this can be used to pass arguments to Perl*Handlers:

   PerlHandlerArgs Package::sub_name  OneArg TwoArg RedArg BlueArg 
   
split out some config routines from mod_perl.c to config.c

fixed bug in Apache/Makefile.PL thanks to Jeff Rowe

now use translate slot to do some initialization

Perl*Handlers can now be anonymous subs (need 5.003_98+), e.g.:

 PerlFixupHandler "sub { shift->header_out(Key => 'val') }"

finally get cleanups right:
- PerlCleanupHandler is now run during PerlLogHandler
- new method $r->register_cleanup uses register_cleanup
  underneath and is always available

@INC is now reset to default after each request

fixed "const char *" bug in typemap spotted by Honza Pazdziora 

=item 0.98 - 05/02/97

save a pointer to request_rec in the translate stage so we always have one
for PerlCleanupHandler (e.g. no PerlHandler first), tracked down by Eric Bartley

PerlTransHandler enabled by default now

don't use server_argv0 when intializing perl_startup's argv[], caught by Andreas

remove headers.t, will bring back in 0.98_01 and flesh out PerlNewSendHeader

fix exit() so we don't need to $r->rflush first and we make Rob happy

fix bug in $r->requires, caught by Eric Bartley

go back to $|=1 #ifdef USE_SFIO, caught by Salvador Garcia

=item 0.97_02 - 04/29/97

added documentation for stacked handlers and a little for method handlers.

$^X is now set to server_argv0 as suggested by Frank Cringle

Apache::Registry will now require CGI.pm version 2.35 or higher if you
are using it.  Makefile.PL will also test and warn if it is < 2.35

removed examplish modules from the distribution into the contrib directory: 
AuthzAge.pm, AccessLimitNum.pm, MsqlProxy.pm, SSI.pm
the contrib directory will be tar'd and uploaded to CPAN when updated.

added headers.t test for Perl(New)SendHeader

added option to link httpd with static Apache.o (the original way), 
(Eric Bartley reported problems on aix with Apache.so, others?)
like so:  perl Makefile.PL STATIC=1

only bother setting $$ once per-child

%ENV is now cleared by a registered cleanup function, rather than
after PerlHandler is called

applied patch from Andreas to ensure APACHE_SSL is defined if
we're configuring with it 

putback -DSERVER_SUBVERSION now that netscape workaround is in 1.2b9

PerlNewSendHeader enhancement so headers don't need to be part of
a single print statement.

applied fix from Rob Hartill so Makefile.PL can parse beta version >= 10!

properly initialize cld->new_sendheader thanks to Rob Hartill

$r->print is now an xsub for speedup, even with the new
extra operation of checking $|, it's faster:

 Benchmark: timing 100 iterations of 0.97_01, 0.97_02...
    0.97_01:  9 secs ( 2.03 usr  0.19 sys =  2.22 cpu)
    0.97_02:  8 secs ( 1.84 usr  0.17 sys =  2.01 cpu)

sfapachewrite() will now call Apache->print 

if $| is non-zero, call rflush() after writing to the client

$| is reset to 0 before PerlHandler is called

applied patch from Eric Bartley to:
-add get_remote_logname() method
-update Apache.pm documentation including:
 get_remote_logname, auth_type, auth_name, document_root, notes

fix so $r->rflush works with older apache's

=item 0.97_01 - 04/22/97

added experimental `PerlNewSendHeader' config directive
works like `PerlSendHeader', but scans headers for special
headers like Location:, Status:, etc.
simply uses a C global variable `sent_header', if true, sends
data asis to client, otherwise calls $r->send_cgi_header 
currently, does not work with sfio (yet) and this only works if a
single print statement sends  the headers like so:

 print "Status: 302\n", 
       "Location: http://www.somewhere.com/\n",
       "Content-type: text/html\n\n";

"fixed" new preg* clashes w/ 1.2b9-dev spotted by Dean Gaudet

reworked callback mechanism a bit:
- folded duplicate code in run_stacked_handlers() + perl_call()
- gv_fetchmethod called only if -DPERL_METHOD_HANDLERS
- perl_handler_ismethod now() uses class stash in gv_fetchmethod
- cache CV from perl_get_cv lookup if -DPERL_STACKED_HANDLERS
- included patch from Eric Bartley so we can say:
  `Class->method' in Perl*Handler's if -DPERL_METHOD_HANDLERS
- fixed bug spotted by Rob Hartill so Perl*Handler (OK|DECLINED) work again
- added minimal tests for stacked handlers and method handlers
- PERL_METHOD_HANDLERS=1 can be set when running Makefile.PL

PerlCleanupHandler now uses register_cleanup underneath, 
instead of abusing the logger slot. 
PerlCleanupHandler is enabled by default

added PRINTF for tie'd STDOUT

detached Apache.o from httpd, now a dynamic extension. here's why:
- shinks httpd size 
- possible to 'use Apache ()' outside of httpd 
  (very few methods will work though!)
- once mod_perl.c settles it will be possible to upgrade mod_perl 
  without rebuilding httpd!

added $r->server_root_relative function

Apache::Status has 2 new menu items (need Devel::Symdump 1.99_01+):
 - "Inheritance Tree"
 - "ISA Tree" 

added new CGI.pm tests from Andreas

=item 0.97 - 04/15/97

don't add mod_perl/x.xx to Server: unless 'perl Makefile.PL ADD_VERSION=1'

applied patch from Andreas to better Makefile.PL

if httpd is 1.2b8, remove bogus target from modules/Makefile

applied patch from Rob Hartill to add $r->rflush method

applied patch Eric Bartley <bartley@PDN.CC.PURDUE.EDU> to:
add $r->notes, $r->auth_name, $r->auth_type, $r->document_root methods
ability to set $r->args, $r->connection->user and $r->connection->auth_type

applied patch from Dean Gaudet so $r->exit uses log_transaction 
instead of multi_log_transaction

=item 0.95_06

fixed typo in new merge function that broke PerlHeaderParserHandler

=item 0.95_05

make sure merge of configs accounts for sendheader and setup_env too!

applied patches from Glen McCallum <glenm@tusc.com.au> so build works
with hpux 10.20's native compiler

=item 0.95_04

dir configs are now merged so <Location> blocks can have Perl*Handlers
and PerSetVar's without stomping those that are in .htaccess

Apache->seqno will use the scoreboard's my_access_count if the -DSTATUS
option is enabled (default if mod_status is configured in)

=item 0.95_03

with 1.2b8-dev+, we no longer need a Makefile.tmpl

added Apache->max_requests_per_child method

now have taint.t test

added <Perl> config section (see httpd.conf.pl)
(needs 'perl Makefile.PL PERL_SECTIONS=1')

Apache::Registry will now chdir to directory where the script

Apache::AuthenDBI and Apache::Authen removed from distribution,
now maintained by John Groenveld and Steve Kane

added PerlInitHandler and PerlCleanupHandler hooks 

Apache::Registry will require CGI.pm version 2.32 or higher if it
finds CGI.pm in %INC

added Apache::Registry->push_cleanup method suggested by Frank Cringle.

applied patches from Gerald Richter <richter@ecos.de> to:
-fix Apache::unescape_url_info
-one s/Apache::Config/Apache::MyConfig/ in Makefile.PL

=item 0.95_02

introduced experimental "stacked handlers" mechanism, allowing more
than one Perl*Handler to be defined and run during each stage of the
request.  

Perl*Handler directives can now define any number of subroutines, e.g.
 
 PerlTransHandler OneTrans TwoTrans RedTrans BlueTrans

with a new method, Apache->push_handlers can add to the stack by
scripts at runtime

PerlLogHandler enabled by default during "stacked handlers" experiment

applied patches from Andreas to quiet prototype warnings seen with
perl5.003_94  

applied patches from Gerald Richter <richter@ecos.de> to:
-add Apache::uri_unescape_info function (and make $r->args/content use it)
-built Apache::MyConfig module
-Term::Readline Makefile.PL support for history, etc.

=item 0.95 - 03/20/97

******************************************
*** CGI-XA/* removed from distribution ***
CGI.pm-2.32 is now mod_perl compatible, and 
now ships with CGI::Switch and CGI::Apache. 
******************************************

various documentation updates

renamed Apache::CGI to CGI::Apache 
(you should be using CGI::Switch anyhow!!!)

Perl*Handler package names no longer require a '::' to default
to PackageName::handler() when Perl*Handler is just PackageName

renamed eg/MyPackage.pl to startup.pl, pruned way down to
discourage use of PerlScript and avoid the confusion it has caused in
the past 

updated Makefile.tmpl-1.2 to work with 1.2b8-dev, there will be
a "Multiple rules lines" warning, once 1.2b8 is released, we'll 
take this out

added $r->prev and $r->next methods 

added Apache->taint method

Apache->untaint method now in Apache.xs

added $r->seqno method suggested by Lincoln Stein

added GETC and READLINE for tie *STDIN completeness

fixed Apache::CGI+file upload w/ patch from Andreas

data read from client ($r->read*, $r->args), %ENV, $r->cgi_env and
$r->*header*_* is now marked as tainted, t/net/test now tests this
(only with with `PerlTaintCheck On' of course)

various cleanup, including shifting things so Apache.o can be detached
from httpd to Apache.sl if the need arises 

now -Wall clean, except for Perl's dXSUB_SYS->dummy

set $|=1 by default #ifdef USE_SFIO

added Apache->module method

added Apache::Status->menu_item method

fixed warnings in Apache->read spotted by Owen Scott Medd

applied Apache::Registry fixes from Andreas

applied NeXT fixes from Jeff Hallgren and Andreas

applied XA.pm patch from Owen Scott Medd <osm@INTERGUIDE.COM> 
so filehandles can be ref's

=item 0.94 - 03/09/97

removed pp_hot.patch from distibution

t/net/http-post.t will now test the tie'd *STDIN if $] >= 5.003_93

*STDIN is now tie'd to the client, only works if perl version is
>= 5.003_93 

removed Apache::TieHandle from the distribution as it is no longer
needed.  however, scripts that are currently using:
use Apache:TieHandle ();
tie *STDOUT => "Apache::TieHandle";
will not break, but will produce a no longer needed warning

removed Apache::Registry's attempt to honor __END__, as Andreas
pointed out, this can't really be done right unless we have
Perl::Lex and Perl::Parse :-)

applied Makefile.PL patch from Andreas to use modules instead of
system() where possible

Apache::Constants now defines SERVER_SUBVERSION,
as suggested by Andreas

removed is_perlaliased from Apache::Debug, caught by Andreas

=item 0.93_01 - 03/04/97

added 'use ExtUtils::testlib' to t/docs/startup.pl since PERL5LIB
is shutoff with -T!?!

picky compilers should no longer complain of things reported
by Mike Stok and George Hartlieb when sfio is configured in

added (temporary?) `PerlWarn' directive to pass the -w switch
to perl_parse

bug fix so stderr is hooked to the error_log as it was and
should be (unless PERL_TRACE is defined)

argv[0] to perl_parse is now "httpd", making the value of 
magic $^X "httpd"

`PerlSetupEnv' now on by default

Apache::Registry parses command line switches if it sees #!, 
only -w and -T are recognized at the moment (not enough!)

Apache::Registry now honors __END__

added Apache->untaint method

added `PerlTaintCheck' directive to startup with -T switch

during 'make test' t/TEST now installs a die handler to shutdown httpd 
before make aborts if a test fails as suggested by Gary Shea  

we now passthru httpd's CFLAGS1 via MM's DEFINE
(I needed this for -DHPUX10 + Apache::Constants)  

we now define SERVER_SUBVERSION as suggested by Andreas

fixed $$ bug in CGI::XA with fix from Salvador Garcia

added $r->is_initial_req method, now used by these modules:
Apache::AuthenDBI, Apache::AccessLimitNum, Apache::AuthzAge

Apache::warn now overrides CORE::warn in Apache::Registry scripts,
which is an alias for Apache::log_error 

Apache::exit now overrides CORE::exit in Apache::Registry scripts,
now converted CGI scripts can safely call plain 'ol exit;

$r->exit will close the client connection for you, no need for
$r->connection->close, which is no longer documented, and does 
nothing but warn not to call it.

fixed cookie bugs in CGI::XA spotted by Andrew Tennant

#undef some symbols that caused clashes #ifdef HPUX10
and ones on solaris spotted by Bowen Dwelle

=item 0.93 

updated Makefile.tmpl-1.2 to be inline with 1.2b6

removed 1.2b5 Makefile.tmpl, 1.2b1..b5 no longer supported

mortalize return value from $r->read_client_block

make Apache::CGI scrict clean thanks to Frank Cringle

=item 0.92 - 01/23/97

fixed core-dump-causing bug spotted by Mike Stok

=item 0.91 - 01/22/97

perl_init now says 'use Apache::Constants qw(OK DECLINED)' (in C) so you can
say 'Perl*Handler DECLINED', suggested by, you guessed it, Rob

applied patch from Rob so Makefile.PL copies $APACHE_SRC/Configuration to src/
if it has been changed

added Makefile.tmpl-1.2b5 from Rob

applied patch from Rob Hartill to stop $r->cgi_env($key) from core-dumping 
if $key does not exist

applied PerlModule overflow check patch from Rob Hartill

added $r->as_string method

=item 0.90_01

depreciation of Apache->request use outside of Apache::CGI and scripts
that run under Apache::Registry now spits out a warning.  See Apache.pm
doc update for details.

$r->is_perlaliased has gone away

added api tests

added tests for callback hooks besides PerlHandler

added Apache::perl_hook function

if a callback does not return a status values, we assume OK, 
fatal errors would have never made it that far anyhow, 
still log warning to error_log, but carry on

clean up here and there

added PerlHeaderParserHandler callback hook for apache versions >= 1.2b5

added $r->connection->aborted method
added $r->the_request and $r->header_only methods
added Apache::Server methods: is_virtual and names

added $r->headers_out and $r->err_header_out methods:
header*_* methods are now consistent, see Apache.pm docs

should now use $r->err_header_out instead of $r->err_headers_out
to set the value of an err_header

added 1.1.3 to Makefile.PL version map after hint from Arin Goldberg

src/modules/perl/Makefile now detects modules linked static with
your perl and links them with httpd

Apache::CGI->read_from_client now calls $r->read instead of 
$r->read_client_block

applied fix for bug in read_client_block thanks to Milan Votava 

updated Apache::SSI documentation

can now 'make test PORT=xxxx'

can now 'make start_httpd', 'make kill_httpd' for testing

perl Makefile.PL ALL_HOOKS=1 enables all Perl*Handler callbacks

$r->filename will re-stat r->finfo if you change the filename as
suggested by Rob Hartill

Makefile.PL now copies $APACHE_SRC/Configuration to src/ modifies, 
then tells apache's Configure to use this copy with -file

applied patch from Pai-Ling Hsiao <pailing@STRAWBERRY.UCC.UCONN.EDU>
o fix CGI::XA->*_group bugs

t/constants/export.t now tests _all_ of @EXPORT and %EXPORT_TAGS

fixed bugs in Apache::Constants spotted by John Groenveld and Rob Hartill

Apache.xs now uses rwrite() if apache >= 1.2b4

=item 0.90

perl Makefile.PL PERL_TRACE=1 will now enable tracing

changed Makefile.PL so we can enable callback hooks ala:
  perl Makefile.PL PERL_AUTHEN=1 PERL_FIXUP=1

updated INSTALL and mod_perl.pod to reflect this change

=item 0.89

fixed bug spotted by Rob Hartill so perl_cmds[] is not prematurely
terminated

added Bundle::Apache module for use with CPAN.pm

fixed Constants/Makefile.PL so -I picks up $(APACHE_SRC) no matter what,
thanks to Mike Stok

=item 0.88

applied Makefile.PL patch from Rob Hartill so we compile with 1.2b3

=item 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

=item 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???

=item 0.85_06

same as 0.85_05, just fixed broken tarball
 
=item 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

=item 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"

=item 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

=item 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

=item 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

=item 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

=item 0.84 - October 27, 1996

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

applied Makefile.PL patches from Gisle

=item 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*

=item 0.83_09

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

=item 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

=item 0.83_07

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

=item 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

=item 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

=item 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

=item 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

=item 0.83_02

bug patch to Apache::Registry from Andreas

=item 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.

=item *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

=item *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

=item 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  

=item 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'

=item 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

=item 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

=item 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


=item 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>

=item 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.


=item release 0.60a5 - June 25, 1996

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

=item 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


=item 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 


=item 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).


=item 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

=item 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

=item 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.


=item 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!


=back

=cut
