Subject: CVS commit: pkgsrc/www/p5-Apache-ASP
From: Ulrich Habel
Date: 2008-07-21 11:52:33
Message id: 20080721095233.3EBEB175D0@cvs.netbsd.org

Log Message:
updated to 2.61
took maintainership

- not all changes have been logges by upstream -
ChangeLog:
    $VERSION = 2.59; $DATE="05/23/2005"
     + added "use bytes" to Response object to calculate Content-Length
       correctly for UTF8 data, which should require therefore at least
       perl version 5.6 installed

     + updated to work with latest mod_perl 2.0 module naming convention,
       thanks to Randy Kobes for patch

     + examples now exclude usage of Apache::Filter & Apache::SSI under \ 
mod_perl 2.0

    $VERSION = 2.57; $DATE="01/29/2004"
     - $Server->Transfer will update $0 correctly

     - return 0 for mod_perl handler to work with latest mod_perl 2 release
       when we were returning 200 ( HTTP_OK ) before

     - fixed bug in $Server->URL when called like $Server->URL($url)
       without parameters.  Its not clear which perl versions this bug
       affected.

    $VERSION = 2.55; $DATE="08/09/2003"
     - Bug fixes for running on standalone CGI mode on Win32 submitted
       by Francesco Pasqualini

     + Added Apache::ASP::Request::BINMODE for binmode() being
       called on STDIN after STDIN is tied to $Request object

     + New RequestBinaryRead configuration created, may be turned off
       to prevent $Request object from reading POST data

     ++ mod_perl 2 optmizations, there was a large code impact on this,
       as much code was restructured to reduce the differences between
       mod_perl 1 and mod_perl 2, most importantly, Apache::compat is
       no longer used

     + preloaded CGI for file uploads in the mod_perl environment

     - When XSLT config is set, $Response->Redirect() should work now
       Thanks to Marcus Zoller for pointing problem out

     + Added CookieDomain setting, documented, and added test to cover
       it in t/cookies.t . Setting suggested by Uwe Riehm, who nicely
       submitted some code for this.

    $VERSION = 2.53; $DATE="04/10/2003"
     + XMLSubs tags with "-" in them will have "-" replaced \ 
with "_" or underscore, so a
       tag like <my:render-table /> will be translated to \ 
&my::render_table() ... tags with
       - in them are common in extended XML syntaxes, but perl subs cannot have \ 
- in them only.

     + Clean setting now works on output when $Response->{ContentType} begins \ 
with text/html;
       like "text/html; charset=iso-8859-2" ... before Clean would \ 
only work on output marked
       with ContentType text/html.  Thanks to Szymon Juraszczyk for recommending fix.

     --Fixed a bug which would cause Session_OnEnd to be called twice on \ 
sessions in a certain case,
       particularly when an old expired session gets reused by and web \ 
browser... this bug was
       a result of a incomplete session cleanup method in this case.  Thanks to \ 
Oleg Kobyakovskiy
       for reporting this bug.  Added test in t/session_events.t to cover this \ 
problem going forward.

     - Compile errors from Apache::ASP->Loader() were not being reported.  \ 
They will
       be reported again now.  Thanks to Thanos Chatziathanassiou for discovering and
       documenting this bug.  Added test in t/load.t to cover this problem going \ 
forward.

     + use of chr(hex($1)) to decode URI encoded parameters instead of \ 
pack("c",hex($1))
       faster & more correct, thanks to Nikolay Melekhin for pointing out \ 
this need.

     (d) Added old perlmonth.com articles to ./site/articles in distribution
       and linked to them from the docs RESOURCES section

     (d) Updated documention for the $Application->SessionCount API

     + Scripts with named subroutines, which is warned against in the style guide,
       will not be cached to help prevent my closure problems that often
       hurt new developers working in mod_perl environments.  The downside
       is that these script will have a performance penalty having to be
       recompiled each invocation, but this will kill many closure caching
       bugs that are hard to detect.

     - $Request->FileUpload('upload_file', 'BrowserFile') would return
       a glob before that would be the file name in scalar form.  However
       this would be interpreted as a reference incorrectly.  The fix
       is to make sure this is always a scalar by stringifying
       this data internally.  Thanks to Richard Curtis for pointing
       out this bug.

    $VERSION = 2.51; $DATE="02/10/2003"
     + added t/session_query_parse.t test to cover use of SessionQueryParse
       and $Server->URL APIs

     - Fixed duplicate "&" bug associated with using $Server->URL
       and SessionQueryParse together

     + Patch to allow $Server->URL() to be called multiple times on the same URL
       as in $Server->URL($Server->URL($url, \%params), \%more_params)

     (d) Added new testimonials & sites & created a separate \ 
testimonials page.

     - SessionQueryParse will now add to &amp; to the query strings
       embedded in the HTML, instead of & for proper HTML generation.
       Thanks to Peter Galbavy for pointing out and Thanos Chatziathanassiou
       for suggesting the fix.

     - $Response->{ContentType} set to text/html for developer error reporting,
       in case this was set to something else before the error occured.
       Thanks to Philip Mak for reporting.

     - Couple of minor bug fixes under PerlWarn use, thanks Peter Galbavy
       for reporting.

     + Added automatic load of "use Apache2" for compat with mod_perl2
       request objects when Apache::ASP is loaded via "PerlModule \ 
Apache::ASP"
       Thanks to Richard Curtis for reporting bug & subsequent testing.

     - When GlobalPackage config changes, but global.asa has not, global.asa
       will be recompiled anyway to update the GlobalPackage correctly.
       Changing GlobalPackage before would cause errors if global.asa was
       already compiled.

     ++ For ANY PerlSetVar type config, OFF/Off/off will be assumed
        to have value of 0 for that setting.  Before, only a couple settings
        had this semantics, but they all do now for consistency.

     - Fix for InodeNames config on OpenBSD, or any OS that might have
       a device # of 0 for the file being stat()'d, thanks to Peter Galbavy
       for bug report.

     ++ Total XSLT speedups, 5-10% on large XSLT, 10-15% on small XSLT

     + bypass meta data check like expires for XSLT Cache() API use
       because XSLT tranformations don't expire, saves hit to cache dbm
       for meta data

     + use of direct Apache::ASP::State methods like FETCH/STORE
       in Cache() layer so we don't have to go through slower tied interface.
       This will speed up XSLT & and include output caching mostly.

     + minor optimizations for speed & memory usage

    $VERSION = 2.49; $DATE="11/10/2002"
     -- bug introduced in 2.47 cached script compilations for executing
        scripts ( not includes ) of the same name in different directories
        for the same Global/GlobalPackage config for an application.
        Fix was to remove optimization that caused problem, and
        created test case t/same_name.t to cover bug.

    $VERSION = 2.47; $DATE="11/06/2002"
     ++ Runtime speed enhancements for 15-20% improvement including:
       + INTERNAL API ReadFile() now returns scalar ref as memory optimization
       + cache InodeNames config setting in ASP object now for common lookups
       + removed CompileChecksum() INTERNAL API, since it was an unnecesary
         method decomposition along a common code path
       + removed IsChanged() INTERNAL API since compiling of scripts
         is now handled by CompileInclude() which does this functionality already
       + removed unnecessary decomp of IncludesChanged() INTERNAL API, which was \ 
along
         critical code path
       + do not call INTERNAL SearchDirs() API when compiling base script
         since we have already validated its path earlier
       + Use stat(_) type shortcut for stat() & -X calls where possible
       + Moved @INC initilization up to handler() & consolidated with $INCDir lib
       + removed useless Apache::ASP::Collection::DESTROY
       + removed useless Apache::ASP::Server::DESTROY
       + removed useless Apache::ASP::GlobalASA::DESTROY
       + removed useless Apache::ASP::Response::DESTROY

     - Default path for $Response->{Cookies} was from CookiePath
       config, but this was incorrect as CookiePath config is only
       for $Session cookie, so now path for $Response->{Cookies}
       defaults to /

     - Fixed bug where global.asa events would get undefined with
       StatINC and GlobalPackage set when the GlobalPackage library
       changed & get reloaded.

     (d) Documented long time config NoCache.

     -- Fixed use with Apache::Filter, capable as both source
        and destination filter.  Added ./site/eg/filter.filter example
        to demonstrate these abilities.

     + Use $r->err_headers_out->add Apache::Table API for cookies
       now instead of $r->cgi_header_out.  Added t/cookies.t test to
       cover new code path as well as general $Response->Cookies API.
       Also make cookies headers sorted by cookie and dictionary key
       while building headers for repeatable behavior, this latter was
       to facilitate testing.

     - fixed $Server->Mail error_log output when failing to connect
       to SMTP server.

     + added tests to cover UniquePackages & NoCache configs since this
       config logic was updated

     + made deprecated warnings for use of certain $Response->Member
       calls more loudly write to error_log, so I can remove the AUTOLOAD
       for Response one day

     - Probably fixed behavior in CgiHeaders, at least under perl 5.8.0, and
       added t/cgi_headers.t to cover this config.

     + removed $Apache::ASP::CompressGzip setting ability, used to possibly
       set CompressGzip in the module before, not documented anyway

     + removed $Apache::ASP::Filter setting ability to set Filter globally,
       not documented anyway

     + removed old work around for setting ServerStarting to 0
       at runtime, which was bad for Apache::DBI on win32 a long
       time ago:

        $Apache::ServerStarting and $Apache::ServerStarting = 0;

       If this code is still needed in Apache::ASP->handler() let
       me know.

     + check to make sure data in internal database is a HASH ref
       before using it for session garbage collection.  This is to
       help prevent against internal database corruption in a
       network share that does not support flock() file locking.

     + For new XMLSubs ASP type <%= %> argument interpolation
       activated with XMLSubsPerlArgs 0, data references can now
       be passed in addition to SCALAR/string references, so one
       can pass an object reference like so:

         <my:tag value="<%= $Object %>" />

       This will only work as long as the variable interpolation <%= %>
       are flushed against the containing " " or ' ', or else the object
       reference will be stringified when it is concatenated with
       the rest of the data.

       Testing for this feature was added to ./t/xmlsubs_aspargs.t

       This feature is still experimental, and its interface may change.
       However it is slated for the 3.0 release as default method,
       so feedback is appreciated.

     + For new XMLSubs ASP type <%= %> argument interpolation
       activated with XMLSubsPerlArgs 0, <% %> will no longer work,
       just <%= %>, as in

         <my:tag value="some value <%= $value %> more data" />

       This feature is still experimental, and its interface may change.
       However it is slated for the 3.0 release as default method,
       so feedback is appreciated.

    $VERSION = 2.45; $DATE="10/13/2002"
     ++New XMLSubsPerlArgs config, default 1, indicates how
      XMLSubs arguments have always been parsed.  If set to 0,
      will enable new XMLSubs args that are more ASP like with
      <%= %> for dynamic interpolation, such as:

        <my:xmlsub arg="<%= $data %>" arg2="text <%= \ 
$data2 %>" />

      Settings XMLSubsPerlArgs to 0 is experimental for now, but
      will become the default by Apache::ASP version 3.0

     ++Optimization for static HTML/XML files that are served up
      via Apache::ASP so that they are not compiled into perl subroutines
      first.  This makes especially native XSLT both faster & take
      less memory to serve, before XSL & XML files being transformed
      by XSLT would both be compiled as normal ASP script first, so
      now this will happen if they really are ASP scripts with embedded
      <% %> code blocks & XMLSubs being executed.

     +Consolidate some config data for Apache::ASP->Loader to use
      globals in @Apache::ASP::CompileChecksumKeys to know which
      config data is important for precompiling ASP scripts.

     +Further streamlined code compilation.  Now both base
      scripts and includes use the internal CompileInclude() API
      to generate code.

     -Fixed runtime HTML error output when Debug is set to -2/2,
      so that script correctly again gets rendered in final perl form.
      Added compile time error output to ./site/eg/syntax_error.htm
      when a special link is clicked for a quick visual test.

     -Cleaned up some bad coding practices in ./site/eg/global.asa
      associated changes in other example files.  Comment example
      global.asa some for the first time reader

     -DemoASP.pm examples module needed "use strict" fix, thanks
      to Allan Vest for bug report

     --$rv = $Response->Include({ File => ..., Cache => 1});
      now works to get the first returned value fetched from
      the cache.  Before, because a list was always returned,
      $rv would have been equal to the number of items returned,
      even if the return value list has just one element.

     (d) added site/robots.txt file with just a comment for
         search engine indexing

     -fixed ./site/eg/binary_write.htm to not use
      $Response->{ContentLength} because it does not exist.
      Fixed it to use $Response->AddHeader now instead

    $VERSION = 2.41; $DATE="09/29/2002"
     -Removed CVS Revision tag from Apache::ASP::Date, which
      was causing bad revision numbers in CPAN after CVS integration
      of Apache::ASP

     +removed cgi/asp link to ../asp-perl from distribution.  This
      link was for the deprecated asp script which is now asp-perl

    $VERSION = 2.39; $DATE="09/10/2002"
     -Turn off $^W explicitly before reloading global.asa.  Reloading
      global.asa when $^W is set will trigger subroutine redefinition
      warnings.  Reloading global.asa should occur without any problems
      under normal usage of the system, thus this work around.

      This fix is important to UseStrict functionality because warnings
      automatically become thrown as die() errors with UseStrict enabled,
      so we have to disable normal soft warnings here.

     -$Response->Include() runtime errors now throw a die() that
      can be trapped.  This was old functionality that has been restored.
      Other compile time errors should still trigger a hard error
      like script compilation, global.asa, or $Response->Include()
      without an eval()

     +Some better error handling with Debug 3 or -3 set, cleaned
      up developer errors messages somewhat.

    $VERSION = 2.37; $DATE="07/03/2002"
     -Fixed the testing directory structures for t/long_names.t
      so that tar software like Archive::Tar & Solaris tar that
      have problems with long file names will still be able
      to untar distribution successfully.  Now t/long_names.t
      generates its testing directory structures at runtime.

     -Fixes for "make test" to work under perl 5.8.0 RC2,
      courtesy of Manabu Higashida

     +SessionQueryForce setting created for disabling use of cookies
      for $Session session-id passing, rather requiring use of SessionQuery*
      functionality for session-id passing via URL query string.

      By default, even when SessionQuery* options are used, cookies will
      be used if available with SessionQuery* functionality acting only
      as a backup, so this makes it so that cookies will never be used.

     +Escape ' with HTMLEncode() to &#39;

     -Trying to fix t/server_mail.t to work better for platforms
      that it should skip testing on.  Updated t/server.t test case.

     +Remove exit() from Makefile.PL so CPAN.pm's automatic
      follow prereq mechanism works correctly.  Thanks to Slaven Rezic
      for pointing this out.

     +Added Apache::compat loading in mod_perl environment for better
      mod_perl 2.0 support.

    $VERSION = 2.35; $DATE="05/30/2002"
     +Destroy better $Server & $Response objects so that my
      closure references to these to not attempt to work in the future
      against invalid internal data. There was enough data left in these
      old objects to make debugging the my closure problem confusing, where
      it looked like the ASP object state became invalid.

     +Added system debug diagnostics to inspect StateManager group cleanup

     (d) Documentation update about flock() work around for
      Win95/Win98/WinMe systems, confirmed by Rex Arul

     (d) Documentation/site build bug found by Mitsunobu Ozato,
      where <% %> not being escaped correctly with $Server->HTMLEncode().
      New japanese documentation project started by him
      at http://sourceforge.jp/projects/apache-asp-jp/

     -InitPackageGlobals() called after new Apache::ASP object created so
      core system templates can be compiled even when there was a runtime
      compilation error of user templates.  Bug fix needed pointed out by
      Eamon Daly

    $VERSION = 2.33; $DATE="04/29/2002"
     - fixed up t/server_mail.t test to skip if a sendmail server
       is not available on localhost.  We only want the test to run
       if there is a server to test against.

     + removed cgi/asp script, just a symlink now to the ./asp-perl script
       which in this way deprecates it.  I had it hard linked, but the
       distribution did not untar very well on win32 platform.

     + Reordered the modules in Bundle::Apache::ASP for a cleaner install.

     - Fixed bug where XMLSubs where removing <?xml version ... ?> tag
       when it was needed in XSLT mode.

     + $Server->Mail({ CC => '...', BCC => '...' }), now works to send
       CC & BCC headers/recipients.

     + Removed $Apache::ASP::Register definition which defined the current
       executing Apache::ASP object.  Only one part of the application was
       using it, and this has been fixed.  This would have been an unsafe
       use of globals for a threaded environment.

     + Decreased latency when doing Application_OnStart, used to sleep(1)
       for CleanupMaster sync, but this is not necessary for Application_OnStart
       scenario

     + Restructure code / core templates for MailErrorsTo funcationality.
       Wrote test mail_error.t to cover this.  $ENV{REMOTE_USER} will now
       be displayed in the MailErrorsTo message when defined from 401 basic auth.

     + $Server->RegisterCleanup should be thread safe now, as it no longer relies
       on access to @Apache::ASP::Cleanup for storing the CODE ref stack.

     + test t/inode_names.t for InodeNames and other file tests covering case
       of long file names.

     - Fixed long file name sub identifier bug.  Added test t/long_names.t.

     + CacheDir may now be set independently of StateDir.  It used to default
       to StateDir if it was set.

     ++ Decomposition of modules like Apache::ASP::Session & \ 
Apache::ASP::Application
       out of ASP.pm file.  This should make the source more developer friendly.

       This selective code compilation also speeds up CGI requests that do not
       need to load unneeded modules like Apache::ASP::Session, by about 50%,
       so where CGI mode ran at about 2.1 hits/sec before, now for
       light requests that do not load $Session & $Application, requests
       run at 3.4 hits/sec, this is on a dual PIII-450 linux 2.4.x

     - Caching like for XSLTCache now works in CGI mode.
       This was a bug that it did not before.

     + $Server->File() API added, acts as a wrapper around
       Apache->request->filename Added test in t/server.t

     ++  *** EXPERIMENTAL / ALPHA FEATURE NOTE BEGIN ***

       New $PERLLIB/Apache/ASP/Share/ directory created to
       hold system & user contributed components, which will be found
       on the $Server->MapInclude() path, which helps $Response->Include
       search '.',Global,IncludesDir, and now Apache::ASP::Share for
       includes to load at runtime.

       The syntax for loading a shared include is to prefix the file
       name with Share:: as in:

        $Response->TrapInclude('Share::CORE/MailError.inc');

       New test to cover this at t/share.t

       This feature is experimental.  The naming convention may change
       and the feature may disappear altogether, so only use if you
       are interesting in experimenting with this feature & will
       provide feedback about how it works.

       *** EXPERIMENTAL / ALPHA FEATURE NOTE END ***

     + asp-perl script now uses ./asp.conf instead of ./asp.config
       for runtime configuration via %Config defined there.  Update docs
       for running in standalone CGI mode

     + Make use of MANFEST.SKIP to not publish the dev/* files anymore.

     - Script_OnEnd guaranteed to run after $Response->End, but
       it will not run if there was an error earlier in the request.

     + lots of new test cases covering behaviour of $Response->End
       and $Response->Redirect under various conditions like XMLSubs
       and SoftRedirect and global.asa Script_OnStart

     + asp-perl will be installed into the bin executables when
       Apache::ASP is installed.  asp-perl is the command line version
       of Apache::ASP that can also be used to run script in CGI mode.
       Test case covering asp-perl functionality.

     + asp CGI/command line script now called asp-perl.  I picked this
       name because Apache::ASP often has the name asp-perl in distributions
       of the module.

     + Apache::ASP::CGI::Test class now subclass of Apache::ASP::CGI.  To facilitate
       this Apache::ASP::CGI::init() now called OO like Apache::ASP::CGI->init()
       Fixed up places where the old style was called.  New Test class allows
       a dummy Apache request object to be built which caches header & body \ 
output
       for later inspection instead of writing it to STDOUT.

     - $Response->Redirect() under SoftRedirect 1 will not first Clear() buffer

     - $Response->Redirect() in an XMLSubs will work now ... behavior
       of $Response->Flush() being turned off in an XMLSubs was interfering \ 
with this.

     + srand() init tracking done better, thanks for patch from Ime Smits

     + Added file/directory being used for precompilation in
       Apache::ASP->Loader($file, ...) to output like:

        [Mon Feb 04 20:19:22 2002] [error] [asp] 4215 (re)compiled 22 scripts
          of 22 loaded for $file

       This is so that when precompiling multiple web sites
       each with different directories, one can easier see the
       compile output relevant to the Loader() command being run.

     + better decomp of Apache::ASP site build files at ./build/* files,
       which is good should anyone look at it for ideas.

     + improved test suite to error when unintended output results from
       t/*.t test scripts.

     - () now supported in XMLSubsMatch config, added xmlsubsmatch.t test...
       specifically a config like

         PerlSetVar (aaa|bbb):\w+

       should now work.  Thanks for bug report from David Kulp.

     + Added an early srand() for better $ServerID creation

     + Work around for DSO problems where $r is not always correctly
       defined in Apache::ASP::handler().  Thanks to Tom Lear for patch.

    $VERSION = 2.31; $DATE="01/22/2002";
     + $Server->MapInclude() API extension created to wrap up \ 
Apache::ASP::SearchDirs
       functionality so one may do an conditional check for an include existence \ 
befor
       executing $Response->Include().  Added API test to server.t

     + $Server->Transfer() now allows arguments like $Response->Include(), \ 
and now acts just
       as a wrapper for:

         $Response->Include($file, @args);
         $Response->End();

       added test case at t/server_transfer.t

     + Removed dependency of StatINC functionality on Apache::Symbol.  Apache::Symbol
       is no longer required.  Added test of t/stat_inc.t for correct StatINC \ 
initialization
       for platforms where Devel::Symdump is present.

     + Better error message when $Request->Params has not been defined with \ 
RequestParams
       config & it gets used in script.  Added test case as \ 
t/request_params_none.t

     + Directories cannot now be included as scripts via \ 
$Response->Include(), added
       test case to t/include.t

     - No longer make $Response->Flush dependent on \ 
$Response->IsClientConnected() to
       be true to write output to client.  There have been spurious errors reported
       about the new ( >= 2.25 ) IsClientConnected code, and this will limit \ 
the impact
       of that functionality possibly not working still to those users \ 
explicitly using
       that API.

     + $Response->AddHeader($header_name, $value) now will set $Response members
       for these headers: Content-Type, Cache-Control, Expires.  This is to avoid
       both the application & Apache::ASP sending out duplicate headers.  Added
       test cases for this to t/response.t

     + split up Bundle::Apache::ASP into that, and Bundle::Apache::ASP::Extra
       the former with just the required modules to run, and the latter
       for extra functionality in Apache::ASP

     + new $Request->{Method} member to return $r->method of GET or POST that
       client browser is requesting, added t/request.t sub test to cover this member.

    $VERSION = 2.29; $DATE="11/19/2001";
     +Added some extra help text to the ./cgi/asp --help message
      to clarify how to pass arguments to a script from the command line.

     +When using $Server->Mail() API, if Content-Type header is set,
      and MIME-Version is not, then a "MIME-Version: 1.0" header will \ 
be sent
      for the email.  This is correct according to RFC 1521 which specifies
      for the first time the Content-Type: header for email documents.
      Thanks to Philip Mak for pointing out this correct behavior.

     +Made dependent on MLDBM::Sync version .25 to pass the taint_check.t test

     +Improved server_mail.t test to work with mail servers were relaying is denied

     +Added <html><body> tags to MailErrorsTo email

     --Fixed SessionCount / Session_OnEnd bug, where these things were not
      working for $Sessions that never had anything written to them.
      This bug was introduced in 2.23/2.25 release.

      There was an optimization in 2.23/2.25 where a $Session that was never
      used does not write its state lock file & dbm files to disk, only if
      it gets written too like $Session->{MARK}++.  Tracking of these NULL \ 
$Sessions
      then is handled solely in the internal database.  For $Session garbage
      collection though which would fire Session_OnEnd events and update
      SessionCount, the Apache::ASP::State->GroupMembers() function was just
      looking for state files on disk ... now it looks in the internal database
      too for SessionID records for garbage collection.

      Added a test at ./t/session_events.t for these things.

     +Some optimizations for $Session API use.

     +Added support for XSLT via XML::LibXSLT, patch courtesy of Michael Buschauer

     -Got rid of an warning when recompiling changing includes under perl 5.6.1...
      undef($code) method did not work for this perl version, rather \ 
undef(&$code) does.
      Stopped using using Apache::Symbol for this when available.

     -Make Apache::ASP script run under perl taint checking -T for perl 5.6.1...
      $code =~ tr///; does not work to untaint here, so much use the slower:
      $code =~ /^(.*)$/s; $code = $1; method to untaint.

     -Check for inline includes changing, included in a dynamic included
      loaded at runtime via $Response->Include().  Added test case for
      this at t/include_change.t.  If an inline include of a dynamic include
      changes, the dynamic include should get recompiled now.

     -Make OK to use again with PerlTaintCheck On, with MLDBM::Sync 2.25.
      Fixed in ASP.pm, t/global.asa, and created new t/taint_check.t test script

     +Load more modules when Apache::ASP is loaded so parent will share more
      with children httpd:
       Apache::Symbol
       Devel::Symdump
       Config
       lib
       MLDBM::Sync::SDBM_File

     +When FileUploadMax bytes is exceeded for a file upload, there will not
      be an odd error anymore resulting from $CGI::POST_MAX being triggered,
      instead the file upload input will simply be ignored via $CGI::DISABLE_UPLOADS.
      This gives the developer the opportunity to tell the user the the file upload
      was too big, as demonstrated by the ./site/eg/file_upload.asp example.

      To not let the web client POST a lot of data to your scripts as a form
      of a denial of service attack use the apache config LimitRequestBody for the
      max limits.  You can think of PerlSetVar FileUploadMax as a soft limit, and
      apache's LimitRequestBody as a hard limit.

     --Under certain circumstances with file upload, it seems that \ 
IsClientConnected()
      would return an aborted client value from $r->connection->aborted, so
      the buffer output data would not be flushed to the client, and
      the HTML page would return to the browser empty.  This would be under
      normal file upload use.  One work-around was to make sure to initialize
      the $Request object before $Response->IsClientConnected is called,
      then $r->connection->aborted returns the right value.

      This problem was probably introduced with IsClientConnected() code changes
      starting in the 2.25 release.

    $VERSION = 2.27; $DATE="10/31/2001";
     + Wrapped call to $r->connection->fileno in eval {} so to
       preserve backwards compatibility with older mod_perl versions
       that do not have this method defined.  Thanks to Helmut Zeilinger
       for catching this.

     + removed ./dev directory from distribution, useless clutter

     + Removed dependency on HTTP::Date by taking code into
       Apache::ASP as Apache::ASP::Date.  This relieves
       the dependency of Apache::ASP on libwww LWP libraries.
       If you were using HTTP::Date functions before without loading
       "use HTTP::Date;" on your own, you will have to do this now.

     + Streamlined code execution.  Especially worked on
       $Response->IsClientConnected which gets called during
       a normal request execution, and got rid of IO::Select
       dependency. Some function style calls instead of OO style
       calls where private functions were being invokes that one
       would not need to override.

     - Fixed possible bug when flushing a data buffer where there
       is just a '0' in it.

     + Updated docs to note that StateCache config was deprecated
       as of 2.23.  Removed remaining code that referenced the config.

     + Removed references to unused OrderCollections code.

     - Better Cache meta key, lower chance of collision with
       unrelated data since its using the full MD5 keyspace now

     + Optimized some debugging statements that resulted
       from recent development.

     + Tie::TextDir .04 and above is supported for StateDB
       and CacheDB settings with MLDBM::Sync .21. This is good for
       CacheDB where output is larger and there are not many
       versions to cache, like for XSLTCache, where the site is
       mostly static.

     + Better RESOURCES section to web site, especially with adding
       some links to past Apache::ASP articles & presentations.

    $VERSION = 2.25; $DATE="10/11/2001";
     + Improved ./site/apps/search application, for better
       search results at Apache::ASP site.  Also, reengineered
       application better, with more perl code moved to global.asa.
       Make use of MLDBM::Sync::SDBM_File, where search database
       before was engineering around SDBM_File's shortcomings.

     - Fix for SessionSerialize config, which broke in 2.23
       Also, added t/session_serialize.t to test suite to catch
       this problem in the future.

    $VERSION = 2.23; $DATE="10/11/2001";
     +Make sure a couple other small standard modules get loaded
      upon "PerlModule Apache::ASP", like Time::HiRes, Class::Struct,
      and MLDBM::Serializer::Data::Dumper.  If not available
      these modules won't cause errors, but will promote child httpd
      RAM sharing if they are.

     -XMLSubs args parsing fix so an arg like z-index
      does not error under UseStrict.  This is OK now:

       <my:layer z-index=3 top=0 left=0> HTML </my:layer>

     -Only remove outermost <SCRIPT> tags from global.asa
      for IIS/PerlScript compatibility.  Used to remove
      all <SCRIPT> tags, which hurt when some subs in globa.asa
      would be printing some JavaScript.

     +$Response->{IsClientConnected} now updated correctly
      before global.asa Script_OnStart.  $Response->IsClientConnect()
      can be used for accurate accounting, while
      $Response->{IsClientConnected} only gets updated
      after $Response->Flush().  Added test cases to response.t

     +$Server->HTMLEncode(\$data) API extension, now can take
      scalar ref, which can give a 5% improvement in benchmarks
      for data 100K in size.

     -Access to $Application is locked when Application_OnEnd &
      Application_OnStart is called, creating a critical section
      for use of $Application

     ++MLDBM::Sync used now for core DBM support in Apache::ASP::State.
      This drastically simplifies/stabilizes the code in there
      and will make it easier for future SQL database plugins.

     +New API for accessing ASP object information in non content
      handler phases:

        use Apache::ASP;
        sub My::Auth::handler {
          my $r = shift;
          my $ASP = Apache::ASP->new($r)
          my $Session = $ASP->Session;
        }

      In the above example, $Session would be the same $Session
      object created later while running the ASP script for this
      same request.

      Added t/asp_object.t test for this.  Fixed global.asa to only
      init StateDir when application.asp starts which is the first
      test script to run.

     -Fixed on Win32 to make Apache::ASP->new($r) able to create
      multiple master ASP objects per request.  Was not reentrant
      safe before, particularly with state locking for dbms like
      $Application & $Session.

     ++Output caching for includes, built on same layer ( extended )
      as XSLTCache, test suite at t/cache.t.  Enabled with special
      arguments to

        $Response->Include(\%args, @include_args)
        $Response->TrapInclude(\%args, @include_args)
        $Server->Execute(\%args, @include_args)

      where %args = (
        File => 'file.inc',
        Cache => 1, # to activate cache layer
        Expires => 3600, # to expire in one hour
        LastModified => time() - 600, # to expire if cached before 10 minutes ago
        Key => $Request->Form, # to cache based on checksum of serialized \ 
form data,
        Clear => 1, # to not allow fetch from cache this time, will always \ 
execute include
      );

      Like the XSLTCache, it uses MLDBM::Sync::SDBM_File
      by default, but can use DB_File or GDBM_File if
      CacheDB is set to these.

      See t/cache.t for API support until this is documented.

     +CacheSize now supports units of M, K, B like

       CacheSize 10M
       CacheSize 10240K
       CacheSize 10000000B
       CacheSize 10000000

     -Better handling of $Session->Abandon() so multiple
      request to the same session while its being destroyed
      will have the right effect.

     +Optimized XMLSubs parsing.  Scripts with lots lof XMLSubs
      now parse faster for the first time.  One test script with
      almost 200 such tags went from a parse time of around 3 seconds
      to .7 seconds after optimizations.

     +Updated performance tuning docs, particularly for using
      Apache::ASP->Loader()

     +$Server->URL($url, \%params) now handles array refs
      in the params values like
        $Server->URL($url, { key => [ qw( value1 value2 ) ] })

      This is so that query string data found in
      $Request->QueryString that gets parsed into this form
      from a string like: ?key=value&key=value2 would be
      able to be reused passed back to $Server->URL to
      create self referencing URLs more easily.

     -Bug fix where XMLSubs like <s:td /> now works on perl
      5.005xx, thanks to Philip Mak for reporting & fix.

     +When searching for included files, will now join
      the absolute path of the directory of the script
      with the name of the file if its a relative file
      name like ./header.inc.  Before, would just look
      for something like ././header.inc by using '.'
      as the first directory to look for includes in.

      The result of this is that scripts in two directories
      configured with the same Global setting should be able
      to have separate local header.inc files without causing
      a cached namespace collision.

     +$Server->Config() call will return a hash ref
      to all the config setting for that request, like
      Apache->dir_config would.

     -StatINC setting with Apache::ASP->Loader() works again.
      This makes StatINC & StatINCMatch settings viable
      for production & development use when the system has
      very many modules.

     -Cookieless session support with configs like SessionQueryParse
      and SessionQuery now work for URLs with frags in them
      like http://localhost?arg=value#frag

     +@rv = $Response->Include() now works where there are
      multiple return values from an include like:
      <% return(1,2); %>

Files:
RevisionActionfile
1.31modifypkgsrc/www/p5-Apache-ASP/Makefile
1.5modifypkgsrc/www/p5-Apache-ASP/distinfo