[Module]
Name=CGI::Session::ExpireSessions
Changelog.Creator=Module::Metadata::Changes V 2.12
Changelog.Parser=Config::IniFiles V 3.000002

[V 1.14]
Date=2021-04-27T19:10:00
Comments= <<EOT
- Adopt patch to sub expire_db_sessions() from Noam Rathaus. With thanx!
- Change licence from artistic_2 to perl.
- Update POD re repository to be on github, and submission of patches.
- Update Makefile.PL.
EOT

[V 1.13]
Date=2013-05-27T15:57:00
Comments= <<EOT
- Replace /usr/bin/perl with /usr/bin/env perl.
- Replace common::sense with use strict and use warnings, to get uninit var warnings.
- Rename test files from \d\d-*.t to *.t.
- Clean up the POD so it passes tests. Specifically, '=item 1' becomes '=item o 1', and all other '=item'
tokens are replaced by '=item o' to match.
EOT

[V 1.12]
Date=2010-02-21T12:54:42
Comments= <<EOT
- Remove text 'All rights reserved' (for Debian licensing).
- Remove POD heads 'Required Modules' and 'Changes'.
EOT

[V 1.11]
Date=2010-02-10T14:01:28
Comments=- MANIFEST.SKIP updated to exclude MYMETA.yml. Add MYMETA.yml.

[V 1.10]
Date=2009-11-13T13:20:00
Comments= <<EOT
- Run dos2unix
- Rename Changes.txt to CHANGES
EOT

[V 1.09]
Date=2008-05-15T11:11:00
Comments= <<EOT
- Delete V 1.08 from CPAN and upload V 1.09, hoping CPAN will index it properly this time.
All this because some uses have logged a ticket (RT#35515) about not being able
to use 'cpan' to install the module. They are right, I can't get 'cpan' to work either
- Start shipping Changelog.ini
EOT

[V 1.08]
Date=2006-06-12T11:32:00
Comments= <<EOT
- Version 1.07 was never uploaded to CPAN. It was just available from my site, and was meant
for testing the proposed callback mechanism in CGI::Session::find. That mechanism was
changed before CGI::Session 4.14 was released, so my module's code now changes to match.
Also, since CGI::Session has been patched so its sub find() no longer updates the session's
access time, my module now uses atime instead of ctime when checking for expiry
EOT

[V 1.07]
Date=2006-04-12T14:36:00
Comments= <<EOT
- Add method expire_sessions() which uses CGI::Session V 4 method find() to find all sessions,
and then expires sessions if appropriate. All this without evaling the contents of the session
and which therefore resolves RT bug 16069
- Document the new method and the new parameters to new()
- Add test t/03-delete-via-find.t to test the new code
- Add examples/expire-set.pl to demonstrate and document further ways of using the new method
- Make CGI::Session V 4.13 a prerequisite
EOT

[V 1.06]
Date=2006-04-04T10:04:00
Comments= <<EOT
- Add binmode after open in sub expire_file_sessions
- Change "eval $session[0]" into "eval join('', @session)" to handle session data containing \n
- Add a new test, t/new-line.t, to test session data containing \n
- The problem with session data containing \n characters was reported via RT by m-uchino at yetipapa.com
EOT

[V 1.05]
Date=2005-10-26T11:25:00
Comments= <<EOT
- Untaint the data read in from the sessions table before eval-ing it.
The problem, reported (with a code patch) by Dr RA Jones, was that
the original code triggered an insecure dependency warning when running
under -T, but only when using DBD::PgPP under MS Windows.
The exact reason for this warning in this situation remains a mystery
- Simplify code in new() to no longer check if caller is an object
as per the new standard on such matters
EOT

[V 1.04]
Date=2004-11-02T15:20:00
Deploy.Action=Upgrade
Deploy.Reason=Security
Comments= <<EOT
- Note: All files referred to here match the CGI::Session file name format /cgisess_[0-9a-f]{32}/
- Fix the assumption in sub expire_file_sessions() that the program was being run in the temp directory,
by adding the temp directory's name as a prefix to all file names.
Original patch: Matthias Blising
- Fix sub expire_file_sessions() to delete files of size <= 5 bytes which are old enough. Files of size 0
are sometimes created by CGI::Session under unknown circumstances.
As always, use new(delta => 123) to change the definition of 'old enough'
- Fix verbose message for file session where it should have referred to $$D{'_SESSION_ID'}
and not $$D{'id'}. The latter was a careless copy-and-paste from the database code
- Ignore recent files whose size is <= 5 bytes
- Change text of verbose messages from 'Time lapsed' to 'Time elapsed'
- Add a security warning to the POD. Actually this comment is redundant, because you always read the POD,
right?
EOT

[V 1.03]
Date=2004-07-19T14:47:00
Comments= <<EOT
- Change Makefile.PL to coexist with Module::Build
- Add t/pod.t to test all PODs
EOT

[V 1.02]
Date=2004-06-29T10:08:00
Comments= <<EOT
- Add code so sessions which have already expired are also deleted.
Originally, the module allowed you to force sessions to expire, via the delta parameter to new().
Now it also checks for sessions which have already expired, that is for sessions which CGI::Session
would delete automatically when retrieving them. Thanx to Adam Gent for this suggestion
- Rewrite the POD where it discusses expiration and deletion
EOT

[V 1.01]
Date=2004-04-27T10:01:00
Comments= <<EOT
- Add another parameter to new(): table_name. This allows you to store sessions in a table with
a non-default name. The default name is of course 'sessions'. Thanx to Mark Stosberg for this
suggestion
- This module does not work with Mark's module CGI::Session::PureSQL. The best solution to this
problem seems to be to extend CGI::Session to offer a session iterator. This suggesion is also
from Mark. I will propose this today to the author of CGI::Session when I report the bug in
CGI:Session V 3.94 line 168, which says:
if ( $arg->isa('CGI') )
This bug means classes such as CGI::Simple can't be used here as a replacement for CGI.
The code needs to be something like:
if ($arg -> can('cookie') )...
elsif ($arg -> can('param') )...
EOT

[V 1.00]
Date=2004-04-19T12:37:29
Comments=- Original version
