88bca5bb1d
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 & 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 ' -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); %>
5 lines
250 B
Text
5 lines
250 B
Text
$NetBSD: distinfo,v 1.5 2008/07/21 09:52:33 rhaen Exp $
|
|
|
|
SHA1 (Apache-ASP-2.61.tar.gz) = 731e5b1438ddf1e5c5307a2c297c4d075dd5a55a
|
|
RMD160 (Apache-ASP-2.61.tar.gz) = 340236eefee8117ad9787e4a25dda703493e2b36
|
|
Size (Apache-ASP-2.61.tar.gz) = 515098 bytes
|