diff --git a/library/Zend/Session.php b/library/Zend/Session.php index 6378cbf612..682601a4c5 100644 --- a/library/Zend/Session.php +++ b/library/Zend/Session.php @@ -422,8 +422,6 @@ public static function start($options = false) { // Check to see if we've been passed an invalid session ID if ( self::getId() && !self::_checkId(self::getId()) ) { - // Generate a valid, temporary replacement - self::setId(md5(self::getId())); // Force a regenerate after session is started self::$_regenerateIdState = -1; } @@ -434,6 +432,11 @@ public static function start($options = false) } if (self::$_sessionStarted) { + // Generate valid session id + if (self::$_regenerateIdState === -1) { + self::regenerateId(); + } + return; // already started } @@ -664,7 +667,7 @@ public static function setId($id) if (!self::$_unitTestEnabled && defined('SID')) { /** @see Zend_Session_Exception */ require_once 'Zend/Session/Exception.php'; - throw new Zend_Session_Exception('The session has already been started. The session id must be set first.'); + throw new Zend_Session_Exception('The session has already been started. The session id must be set first.'); } if (!self::$_unitTestEnabled && headers_sent($filename, $linenum)) {