From: John Napiorkowski Date: Mon, 26 Jan 2015 23:13:24 +0000 (-0600) Subject: make early finalization an option X-Git-Tag: 0.40~2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Plugin-Session.git;a=commitdiff_plain;h=3ebdf42503cf65a10a13ac60082c5aa41cad4f4f make early finalization an option --- diff --git a/lib/Catalyst/Plugin/Session.pm b/lib/Catalyst/Plugin/Session.pm index 5500182..b078d5b 100644 --- a/lib/Catalyst/Plugin/Session.pm +++ b/lib/Catalyst/Plugin/Session.pm @@ -34,6 +34,7 @@ __PACKAGE__->mk_accessors( _tried_loading_session_data _tried_loading_session_expires _tried_loading_flash_data + _needs_early_session_finalization / ); @@ -111,19 +112,18 @@ sub finalize_headers { # up to date. First call to session_expires will extend the expiry, subs # just return the previously extended value. $c->session_expires; - $c->finalize_session; + $c->finalize_session if $c->_needs_early_session_finalization; return $c->maybe::next::method(@_); } -sub _needs_early_session_finalization { 0 } - sub finalize_body { my $c = shift; # We have to finalize our session *before* $c->engine->finalize_xxx is called, # because we do not want to send the HTTP response before the session is stored/committed to # the session database (or whatever Session::Store you use). + $c->finalize_session unless $c->_needs_early_session_finalization; $c->_clear_session_instance_data; return $c->maybe::next::method(@_);