diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/README.md | 1 | ||||
-rw-r--r-- | libs/Zend/Session.php | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/libs/README.md b/libs/README.md index f5a061a1dc..083684c962 100644 --- a/libs/README.md +++ b/libs/README.md @@ -30,3 +30,4 @@ third-party libraries: - ZF-10871 - undefined variables when socket support disabled - fix #6980 ("Array to string conversion") in `Zend/Session/Exception.php` - fix Zend/Validate using deprecated iconv_set_encoding() + - Make sure sessions work when storing notifications diff --git a/libs/Zend/Session.php b/libs/Zend/Session.php index b5177c18fd..8b55a17b6d 100644 --- a/libs/Zend/Session.php +++ b/libs/Zend/Session.php @@ -491,6 +491,10 @@ class Zend_Session extends Zend_Session_Abstract self::regenerateId(); } + if (isset($_SESSION['data']) && is_string($_SESSION['data'])) { + $_SESSION = unserialize(base64_decode($_SESSION['data'])); + } + // run validators if they exist if (isset($_SESSION['__ZF']['VALID'])) { self::_processValidators(); @@ -688,8 +692,17 @@ class Zend_Session extends Zend_Session_Abstract parent::$_writable = false; } + if (isset($_SESSION)) { + $sessionBkp = $_SESSION; + $_SESSION = array('data' => base64_encode(serialize($_SESSION))); + } + session_write_close(); self::$_writeClosed = true; + + if (isset($sessionBkp)) { + $_SESSION = $sessionBkp; + } } |