Cleanup and optimize new Session classes
diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php
index 1f24456..e6f6050 100755
--- a/system/libraries/Session/Session.php
+++ b/system/libraries/Session/Session.php
@@ -2,20 +2,31 @@
 /**
  * CodeIgniter
  *
- * An open source application development framework for PHP 5.1.6 or newer
+ * An open source application development framework for PHP 5.2.4 or newer
+ *
+ * NOTICE OF LICENSE
+ *
+ * Licensed under the Open Software License version 3.0
+ *
+ * This source file is subject to the Open Software License (OSL 3.0) that is
+ * bundled with this package in the files license.txt / license.rst.  It is
+ * also available through the world wide web at this URL:
+ * http://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to obtain it
+ * through the world wide web, please send an email to
+ * licensing@ellislab.com so we can send you a copy immediately.
  *
  * @package		CodeIgniter
- * @author		ExpressionEngine Dev Team
- * @copyright	Copyright (c) 2008 - 2010, EllisLab, Inc.
- * @license		http://codeigniter.com/user_guide/license.html
+ * @author		EllisLab Dev Team
+ * @copyright	Copyright (c) 2006 - 2012 EllisLab, Inc.
+ * @license		http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
  * @link		http://codeigniter.com
  * @since		Version 2.0
  * @filesource
  */
 
-
 /**
- * CI_Session Class
+ * CodeIgniter Session Class
  *
  * The user interface defined by EllisLabs, now with puggable drivers to manage different storage mechanisms.
  * By default, the cookie session driver will load, but the 'sess_driver' config/param item (see above) can be
@@ -35,12 +46,13 @@
  * @package		CodeIgniter
  * @subpackage	Libraries
  * @category	Sessions
- * @author		ExpressionEngine Dev Team
+ * @author		EllisLab Dev Team
  * @link		http://codeigniter.com/user_guide/libraries/sessions.html
  */
 class CI_Session extends CI_Driver_Library {
+
 	public $params = array();
-	protected $current = null;
+	protected $current = NULL;
 	protected $userdata = array();
 
 	const FLASHDATA_KEY = 'flash';
@@ -69,10 +81,10 @@
 		   	'Session_cookie'
 		);
 		$key = 'sess_valid_drivers';
-		$drivers = (isset($params[$key])) ? $params[$key] : $CI->config->item($key);
+		$drivers = isset($params[$key]) ? $params[$key] : $CI->config->item($key);
 		if ($drivers)
 		{
-			if ( ! is_array($drivers)) $drivers = array($drivers);
+			is_array($drivers) OR $drivers = array($drivers);
 
 			// Add driver names to valid list
 			foreach ($drivers as $driver)
@@ -86,8 +98,12 @@
 
 		// Get driver to load
 		$key = 'sess_driver';
-		$driver = (isset($params[$key])) ? $params[$key] : $CI->config->item($key);
-		if ( ! $driver) $driver = 'cookie';
+		$driver = isset($params[$key]) ? $params[$key] : $CI->config->item($key);
+		if ( ! $driver)
+		{
+			$driver = 'cookie';
+		}
+
 		if ( ! in_array('session_'.strtolower($driver), array_map('strtolower', $this->valid_drivers)))
 		{
 			$this->valid_drivers[] = 'Session_'.$driver;
@@ -111,6 +127,8 @@
 		log_message('debug', 'CI_Session routines successfully run');
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Loads session storage driver
 	 *
@@ -125,6 +143,8 @@
 		return $this->current;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Select default session storage driver
 	 *
@@ -142,7 +162,8 @@
 			if (isset($this->$child))
 			{
 				// See if driver is already current
-				if ($this->$child !== $this->current) {
+				if ($this->$child !== $this->current)
+				{
 					// Make driver current and sync userdata
 					$this->current = $this->$child;
 					$this->userdata =& $this->current->get_userdata();
@@ -156,6 +177,8 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Destroy the current session
 	 *
@@ -167,19 +190,23 @@
 		$this->current->sess_destroy();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Regenerate the current session
 	 *
-	 * @param	boolean	Destroy session data flag (default: false)
+	 * @param	bool	Destroy session data flag (default: false)
 	 * @return	void
 	 */
-	public function sess_regenerate($destroy = false)
+	public function sess_regenerate($destroy = FALSE)
 	{
 		// Call regenerate on driver and resync userdata
 		$this->current->sess_regenerate($destroy);
 		$this->userdata =& $this->current->get_userdata();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Fetch a specific item from the session array
 	 *
@@ -188,10 +215,11 @@
 	 */
 	public function userdata($item)
 	{
-		// Return value or NULL if not found
-		return ( ! isset($this->userdata[$item])) ? NULL : $this->userdata[$item];
+		return isset($this->userdata[$item]) ? $this->userdata[$item] : NULL;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Fetch all session data
 	 *
@@ -199,10 +227,11 @@
 	 */
 	public function all_userdata()
 	{
-		// Return entire array
-		return ( ! isset($this->userdata)) ? NULL : $this->userdata;
+		return isset($this->userdata) ? $this->userdata : NULL;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Fetch all flashdata
 	 *
@@ -225,6 +254,8 @@
 		return $out;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Add or change data in the "userdata" array
 	 *
@@ -253,6 +284,8 @@
 		$this->current->sess_save();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Delete a session variable from the "userdata" array
 	 *
@@ -270,7 +303,7 @@
 		// Unset each item name
 		if (count($newdata) > 0)
 		{
-			foreach ($newdata as $key => $val)
+			foreach (array_keys($newdata) as $key)
 			{
 				unset($this->userdata[$key]);
 			}
@@ -280,18 +313,21 @@
 		$this->current->sess_save();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Determine if an item exists
 	 *
 	 * @param	string	Item name
-	 * @return	boolean
+	 * @return	bool
 	 */
 	public function has_userdata($item)
 	{
-		// Check for item name
 		return isset($this->userdata[$item]);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Add or change flashdata, only available until the next request
 	 *
@@ -318,6 +354,8 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Keeps existing flashdata available to next request.
 	 *
@@ -335,6 +373,8 @@
 		$this->set_userdata($new_flashdata_key, $value);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Fetch a specific flashdata item from the session array
 	 *
@@ -348,13 +388,14 @@
 		return $this->userdata($flashdata_key);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
-	 * Add or change tempdata, only available
-	 * until expiration
+	 * Add or change tempdata, only available until expiration
 	 *
 	 * @param	mixed	Item name or array of items
 	 * @param	string	Item value or empty string
-	 * @param	int		Item lifetime in seconds or 0 for default
+	 * @param	int	Item lifetime in seconds or 0 for default
 	 * @return	void
 	 */
 	public function set_tempdata($newdata = array(), $newval = '', $expire = 0)
@@ -390,6 +431,8 @@
 		$this->set_userdata(self::EXPIRATION_KEY, $expirations);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Delete a temporary session variable from the "userdata" array
 	 *
@@ -400,7 +443,7 @@
 	{
 		// Get expirations list
 		$expirations = $this->userdata(self::EXPIRATION_KEY);
-		if ( ! $expirations || ! count($expirations))
+		if (empty($expirations))
 		{
 			// Nothing to do
 			return;
@@ -415,7 +458,7 @@
 		// Prepend each item name and unset
 		if (count($newdata) > 0)
 		{
-			foreach ($newdata as $key => $val)
+			foreach (array_keys($newdata) as $key)
 			{
 				$tempdata_key = self::FLASHDATA_KEY.self::FLASHDATA_EXP.$key;
 				unset($expirations[$tempdata_key]);
@@ -427,6 +470,8 @@
 		$this->set_userdata(self::EXPIRATION_KEY, $expirations);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Fetch a specific tempdata item from the session array
 	 *
@@ -440,17 +485,17 @@
 		return $this->userdata($tempdata_key);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Identifies flashdata as 'old' for removal
 	 * when _flashdata_sweep() runs.
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function _flashdata_mark()
 	{
-		$userdata = $this->all_userdata();
-		foreach ($userdata as $name => $value)
+		foreach ($this->all_userdata() as $name => $value)
 		{
 			$parts = explode(self::FLASHDATA_NEW, $name);
 			if (is_array($parts) && count($parts) === 2)
@@ -462,16 +507,17 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Removes all flashdata marked as 'old'
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function _flashdata_sweep()
 	{
 		$userdata = $this->all_userdata();
-		foreach ($userdata as $key => $value)
+		foreach (array_keys($userdata) as $key)
 		{
 			if (strpos($key, self::FLASHDATA_OLD))
 			{
@@ -480,17 +526,18 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Removes all expired tempdata
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function _tempdata_sweep()
 	{
 		// Get expirations list
 		$expirations = $this->userdata(self::EXPIRATION_KEY);
-		if ( ! $expirations ||  ! count($expirations))
+		if (empty($expirations))
 		{
 			// Nothing to do
 			return;
@@ -499,7 +546,7 @@
 		// Unset expired elements
 		$now = time();
 		$userdata = $this->all_userdata();
-		foreach ($userdata as $key => $value)
+		foreach (array_keys($userdata) as $key)
 		{
 			if (strpos($key, self::FLASHDATA_EXP) && $expirations[$key] < $now)
 			{
@@ -511,9 +558,10 @@
 		// Update expiration list
 		$this->set_userdata(self::EXPIRATION_KEY, $expirations);
 	}
-}
-// END CI_Session Class
 
+}
+
+// ------------------------------------------------------------------------
 
 /**
  * CI_Session_driver Class
@@ -535,9 +583,10 @@
  * @package		CodeIgniter
  * @subpackage	Libraries
  * @category	Sessions
- * @author		ExpressionEngine Dev Team
+ * @author		EllisLab Dev Team
  */
 abstract class CI_Session_driver extends CI_Driver {
+
 	/**
 	 * Decorate
 	 *
@@ -555,6 +604,8 @@
 		$this->initialize();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * __call magic method
 	 *
@@ -571,6 +622,8 @@
 		return parent::__call($method, $args);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Initialize driver
 	 *
@@ -581,50 +634,56 @@
 		// Overload this method to implement initialization
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Save the session data
 	 *
-	 * Data in the array has changed - perform any storage synchronization necessary
-	 * The child class MUST implement this abstract method!
+	 * Data in the array has changed - perform any storage synchronization
+	 * necessary. The child class MUST implement this abstract method!
 	 *
 	 * @return	void
 	 */
 	abstract public function sess_save();
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Destroy the current session
 	 *
-	 * Clean up storage for this session - it has been terminated
+	 * Clean up storage for this session - it has been terminated.
 	 * The child class MUST implement this abstract method!
 	 *
 	 * @return	void
 	 */
 	abstract public function sess_destroy();
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Regenerate the current session
 	 *
-	 * Regenerate the session id
+	 * Regenerate the session ID.
 	 * The child class MUST implement this abstract method!
 	 *
-	 * @param	boolean	Destroy session data flag (default: false)
+	 * @param	bool	Destroy session data flag (default: false)
 	 * @return	void
 	 */
-	abstract public function sess_regenerate($destroy = false);
+	abstract public function sess_regenerate($destroy = FALSE);
+
+	// ------------------------------------------------------------------------
 
 	/**
 	 * Get a reference to user data array
 	 *
-	 * Give array access to the main CI_Session object
+	 * Give array access to the main CI_Session object.
 	 * The child class MUST implement this abstract method!
 	 *
 	 * @return	array	Reference to userdata
 	 */
 	abstract public function &get_userdata();
-}
-// END CI_Session_driver Class
 
+}
 
 /* End of file Session.php */
-/* Location: ./system/libraries/Session/Session.php */
-?>
+/* Location: ./system/libraries/Session/Session.php */
\ No newline at end of file
diff --git a/system/libraries/Session/drivers/Session_cookie.php b/system/libraries/Session/drivers/Session_cookie.php
index 52eeddb..6d931c1 100755
--- a/system/libraries/Session/drivers/Session_cookie.php
+++ b/system/libraries/Session/drivers/Session_cookie.php
@@ -37,6 +37,7 @@
  * @link		http://codeigniter.com/user_guide/libraries/sessions.html
  */
 class CI_Session_cookie extends CI_Session_driver {
+
 	/**
 	 * Whether to encrypt the session cookie
 	 *
@@ -192,7 +193,6 @@
 	/**
 	 * Initialize session driver object
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function initialize()
@@ -220,16 +220,17 @@
 			'cookie_prefix',
 			'encryption_key'
 		);
+
 		foreach ($prefs as $key)
 		{
-			$this->$key = isset($this->_parent->params[$key]) ? $this->_parent->params[$key] :
-				$this->CI->config->item($key);
+			$this->$key = isset($this->_parent->params[$key])
+				? $this->_parent->params[$key]
+				: $this->CI->config->item($key);
 		}
 
 		if ($this->encryption_key === '')
 		{
-			show_error('In order to use the Cookie Session driver you are required to set an encryption key '.
-				'in your config file.');
+			show_error('In order to use the Cookie Session driver you are required to set an encryption key in your config file.');
 		}
 
 		// Load the string helper so we can use the strip_slashes() function
@@ -280,6 +281,8 @@
 		$this->_sess_gc();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Write the session data
 	 *
@@ -298,6 +301,8 @@
 		$this->_set_cookie();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Destroy the current session
 	 *
@@ -320,15 +325,17 @@
 		$this->userdata = array();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Regenerate the current session
 	 *
 	 * Regenerate the session id
 	 *
-	 * @param	boolean	Destroy session data flag (default: false)
+	 * @param	bool	Destroy session data flag (default: false)
 	 * @return	void
 	 */
-	public function sess_regenerate($destroy = false)
+	public function sess_regenerate($destroy = FALSE)
 	{
 		// Check destroy flag
 		if ($destroy)
@@ -344,21 +351,23 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Get a reference to user data array
 	 *
-	 * @return	array - Reference to userdata
+	 * @return	array	Reference to userdata
 	 */
 	public function &get_userdata()
 	{
-		// Return reference to array
 		return $this->userdata;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Fetch the current session data if it exists
 	 *
-	 * @access	protected
 	 * @return	bool
 	 */
 	protected function _sess_read()
@@ -389,8 +398,7 @@
 			// Does the md5 hash match? This is to prevent manipulation of session data in userspace
 			if ($hash !== md5($session.$this->encryption_key))
 			{
-				log_message('error', 'The session cookie data did not match what was expected. '.
-					'This could be a possible hacking attempt.');
+				log_message('error', 'The session cookie data did not match what was expected. This could be a possible hacking attempt.');
 				$this->sess_destroy();
 				return FALSE;
 			}
@@ -400,8 +408,7 @@
 		$session = $this->_unserialize($session);
 
 		// Is the session data we unserialized an array with the correct format?
-		if ( ! is_array($session) || ! isset($session['session_id'], $session['ip_address'], $session['user_agent'],
-		$session['last_activity']))
+		if ( ! is_array($session) OR ! isset($session['session_id'], $session['ip_address'], $session['user_agent'], $session['last_activity']))
 		{
 			$this->sess_destroy();
 			return FALSE;
@@ -423,7 +430,7 @@
 
 		// Does the User Agent Match?
 		if ($this->sess_match_useragent === TRUE &&
-		trim($session['user_agent']) !== trim(substr($this->CI->input->user_agent(), 0, 120)))
+			trim($session['user_agent']) !== trim(substr($this->CI->input->user_agent(), 0, 120)))
 		{
 			$this->sess_destroy();
 			return FALSE;
@@ -482,10 +489,11 @@
 		return TRUE;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Create a new session
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function _sess_create()
@@ -509,11 +517,12 @@
 		$this->_set_cookie();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Update an existing session
 	 *
-	 * @access	protected
-	 * @param	boolean	Force update flag (default: false)
+	 * @param	bool	Force update flag (default: false)
 	 * @return	void
 	 */
 	protected function _sess_update($force = FALSE)
@@ -551,6 +560,8 @@
 		$this->_set_cookie();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Update database with current data
 	 *
@@ -559,6 +570,8 @@
 	 * so it's guaranteed to update even when a fatal error
 	 * occurs. The first call makes the update and clears the
 	 * dirty flag so it won't happen twice.
+	 *
+	 * @return	void
 	 */
 	public function _update_db()
 	{
@@ -595,6 +608,8 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Generate a new session id
 	 *
@@ -616,15 +631,16 @@
 		return md5(uniqid($new_sessid, TRUE));
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Get the "now" time
 	 *
-	 * @access	protected
 	 * @return	int	 Time
 	 */
 	protected function _get_time()
 	{
-		if ($this->time_reference === 'local' || $this->time_reference === date_default_timezone_get())
+		if ($this->time_reference === 'local' OR $this->time_reference === date_default_timezone_get())
 		{
 			return time();
 		}
@@ -635,36 +651,27 @@
 		return mktime($hour, $minute, $second, $month, $day, $year);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Write the session cookie
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function _set_cookie()
 	{
 		// Get userdata (only defaults if database)
-		if ($this->sess_use_database === TRUE)
-		{
-			$cookie_data = array_intersect_key($this->userdata, $this->defaults);
-		}
-		else
-		{
-			$cookie_data = $this->userdata;
-		}
+		$cookie_data = ($this->sess_use_database === TRUE)
+				? array_intersect_key($this->userdata, $this->defaults)
+				: $this->userdata;
 
 		// Serialize the userdata for the cookie
 		$cookie_data = $this->_serialize($cookie_data);
 
-		if ($this->sess_encrypt_cookie === TRUE)
-		{
-			$cookie_data = $this->CI->encrypt->encode($cookie_data);
-		}
-		else
-		{
+		$cookie_data = ($this->sess_encrypt_cookie === TRUE)
+			? $this->CI->encrypt->encode($cookie_data)
 			// if encryption is not used, we provide an md5 hash to prevent userside tampering
-			$cookie_data = $cookie_data.md5($cookie_data.$this->encryption_key);
-		}
+			: $cookie_data.md5($cookie_data.$this->encryption_key);
 
 		$expire = ($this->sess_expire_on_close === TRUE) ? 0 : $this->sess_expiration + time();
 
@@ -673,35 +680,35 @@
 			$this->cookie_secure, $this->cookie_httponly);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Set a cookie with the system
 	 *
 	 * This abstraction of the setcookie call allows overriding for unit testing
 	 *
-	 * @access  protected
-	 * @param   string  Cookie name
-	 * @param   string  Cookie value
-	 * @param   int	 Expiration time
-	 * @param   string  Cookie path
-	 * @param   string  Cookie domain
-	 * @param   bool	Secure connection flag
-	 * @param   bool	HTTP protocol only flag
-	 * @return  void
+	 * @param	string	Cookie name
+	 * @param	string	Cookie value
+	 * @param	int	Expiration time
+	 * @param	string	Cookie path
+	 * @param	string	Cookie domain
+	 * @param	bool	Secure connection flag
+	 * @param	bool	HTTP protocol only flag
+	 * @return	void
 	 */
-	protected function _setcookie($name, $value = '', $expire = 0, $path = '', $domain = '', $secure = false,
-	$httponly = false)
+	protected function _setcookie($name, $value = '', $expire = 0, $path = '', $domain = '', $secure = FALSE, $httponly = FALSE)
 	{
-		// Set the cookie
 		setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Serialize an array
 	 *
 	 * This function first converts any slashes found in the array to a temporary
 	 * marker, so when it gets unserialized the slashes will be preserved
 	 *
-	 * @access	protected
 	 * @param	mixed	Data to serialize
 	 * @return	string	Serialized data
 	 */
@@ -715,15 +722,17 @@
 		{
 			$data = str_replace('\\', '{{slash}}', $data);
 		}
+
 		return serialize($data);
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Escape slashes
 	 *
 	 * This function converts any slashes found into a temporary marker
 	 *
-	 * @access	protected
 	 * @param	string	Value
 	 * @param	string	Key
 	 * @return	void
@@ -736,13 +745,14 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Unserialize
 	 *
 	 * This function unserializes a data string, then converts any
 	 * temporary slash markers back to actual slashes
 	 *
-	 * @access	protected
 	 * @param	mixed	Data to unserialize
 	 * @return	mixed	Unserialized data
 	 */
@@ -759,12 +769,13 @@
 		return is_string($data) ? str_replace('{{slash}}', '\\', $data) : $data;
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Unescape slashes
 	 *
 	 * This function converts any slash markers back into actual slashes
 	 *
-	 * @access	protected
 	 * @param	string	Value
 	 * @param	string	Key
 	 * @return	void
@@ -777,13 +788,14 @@
 		}
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Garbage collection
 	 *
 	 * This deletes expired session rows from database
 	 * if the probability percentage is met
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function _sess_gc()
@@ -805,7 +817,8 @@
 			log_message('debug', 'Session garbage collection performed.');
 		}
 	}
+
 }
 
 /* End of file Session_cookie.php */
-/* Location: ./system/libraries/Session/drivers/Session_cookie.php */
+/* Location: ./system/libraries/Session/drivers/Session_cookie.php */
\ No newline at end of file
diff --git a/system/libraries/Session/drivers/Session_native.php b/system/libraries/Session/drivers/Session_native.php
index 8ba8e74..c97e153 100755
--- a/system/libraries/Session/drivers/Session_native.php
+++ b/system/libraries/Session/drivers/Session_native.php
@@ -2,18 +2,29 @@
 /**
  * CodeIgniter
  *
- * An open source application development framework for PHP 5.1.6 or newer
+ * An open source application development framework for PHP 5.2.4 or newer
+ *
+ * NOTICE OF LICENSE
+ *
+ * Licensed under the Open Software License version 3.0
+ *
+ * This source file is subject to the Open Software License (OSL 3.0) that is
+ * bundled with this package in the files license.txt / license.rst. It is
+ * also available through the world wide web at this URL:
+ * http://opensource.org/licenses/OSL-3.0
+ * If you did not receive a copy of the license and are unable to obtain it
+ * through the world wide web, please send an email to
+ * licensing@ellislab.com so we can send you a copy immediately.
  *
  * @package		CodeIgniter
- * @author		ExpressionEngine	Dev Team
- * @copyright	Copyright	(c) 2008 - 2010, EllisLab, Inc.
- * @license		http://codeigniter.com/user_guide/license.html
+ * @author		EllisLab Dev Team
+ * @copyright	Copyright (c) 2008 - 2012, EllisLab, Inc. (http://ellislab.com/)
+ * @license		http://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0)
  * @link		http://codeigniter.com
- * @since		Version	2.0
+ * @since		Version 1.0
  * @filesource
  */
 
-
 /**
  * Native PHP session management driver
  *
@@ -22,13 +33,13 @@
  * @package		CodeIgniter
  * @subpackage	Libraries
  * @category	Sessions
- * @author		ExpressionEngine Dev Team
+ * @author		EllisLab Dev Team
  */
 class CI_Session_native extends CI_Session_driver {
+
 	/**
 	 * Initialize session driver object
 	 *
-	 * @access	protected
 	 * @return	void
 	 */
 	protected function initialize()
@@ -47,10 +58,12 @@
 			'cookie_path',
 			'cookie_domain'
 		);
+
 		foreach ($prefs as $key)
 		{
-			$config[$key] = isset($this->_parent->params[$key]) ? $this->_parent->params[$key] :
-				$CI->config->item($key);
+			$config[$key] = isset($this->_parent->params[$key])
+				? $this->_parent->params[$key]
+				: $CI->config->item($key);
 		}
 
 		// Set session name, if specified
@@ -75,11 +88,13 @@
 			// Default to 2 years if expiration is "0"
 			$expire = ($config['sess_expiration'] == 0) ? (60*60*24*365*2) : $config['sess_expiration'];
 		}
+
 		if ($config['cookie_path'])
 		{
 			// Use specified path
 			$path = $config['cookie_path'];
 		}
+
 		if ($config['cookie_domain'])
 		{
 			// Use specified domain
@@ -98,14 +113,14 @@
 			// Expired - destroy
 			$destroy = TRUE;
 		}
-		else if ($config['sess_match_ip'] == TRUE && isset($_SESSION['ip_address']) &&
-		$_SESSION['ip_address'] != $CI->input->ip_address())
+		elseif ($config['sess_match_ip'] === TRUE && isset($_SESSION['ip_address'])
+			&& $_SESSION['ip_address'] !== $CI->input->ip_address())
 		{
 			// IP doesn't match - destroy
 			$destroy = TRUE;
 		}
-		else if ($config['sess_match_useragent'] == TRUE && isset($_SESSION['user_agent']) &&
-		$_SESSION['user_agent'] != trim(substr($CI->input->user_agent(), 0, 50)))
+		elseif ($config['sess_match_useragent'] === TRUE && isset($_SESSION['user_agent'])
+			&& $_SESSION['user_agent'] !== trim(substr($CI->input->user_agent(), 0, 50)))
 		{
 			// Agent doesn't match - destroy
 			$destroy = TRUE;
@@ -120,8 +135,8 @@
 		}
 
 		// Check for update time
-		if ($config['sess_time_to_update'] && isset($_SESSION['last_activity']) &&
-		($_SESSION['last_activity'] + $config['sess_time_to_update']) < $now)
+		if ($config['sess_time_to_update'] && isset($_SESSION['last_activity'])
+			&& ($_SESSION['last_activity'] + $config['sess_time_to_update']) < $now)
 		{
 			// Regenerate ID, but don't destroy session
 			$this->sess_regenerate(FALSE);
@@ -131,12 +146,13 @@
 		$_SESSION['last_activity'] = $now;
 
 		// Set matching values as required
-		if ($config['sess_match_ip'] == TRUE && !isset($_SESSION['ip_address']))
+		if ($config['sess_match_ip'] === TRUE && ! isset($_SESSION['ip_address']))
 		{
 			// Store user IP address
 			$_SESSION['ip_address'] = $CI->input->ip_address();
 		}
-		if ($config['sess_match_useragent'] == TRUE && !isset($_SESSION['user_agent']))
+
+		if ($config['sess_match_useragent'] === TRUE && ! isset($_SESSION['user_agent']))
 		{
 			// Store user agent string
 			$_SESSION['user_agent'] = trim(substr($CI->input->user_agent(), 0, 50));
@@ -146,10 +162,11 @@
 		$_SESSION['session_id'] = session_id();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Save the session data
 	 *
-	 * @access	public
 	 * @return	void
 	 */
 	public function sess_save()
@@ -157,10 +174,11 @@
 		// Nothing to do - changes to $_SESSION are automatically saved
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Destroy the current session
 	 *
-	 * @access	public
 	 * @return	void
 	 */
 	public function sess_destroy()
@@ -178,13 +196,14 @@
 		session_destroy();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Regenerate the current session
 	 *
 	 * Regenerate the session id
 	 *
-	 * @access	public
-	 * @param	boolean	Destroy session data flag (default: FALSE)
+	 * @param	bool	Destroy session data flag (default: FALSE)
 	 * @return	void
 	 */
 	public function sess_regenerate($destroy = FALSE)
@@ -194,10 +213,11 @@
 		$_SESSION['session_id'] = session_id();
 	}
 
+	// ------------------------------------------------------------------------
+
 	/**
 	 * Get a reference to user data array
 	 *
-	 * @access	public
 	 * @return	array	Reference to userdata
 	 */
 	public function &get_userdata()
@@ -205,7 +225,8 @@
 		// Just return reference to $_SESSION
 		return $_SESSION;
 	}
+
 }
 
 /* End of file Session_native.php */
-/* Location: ./system/libraries/Session/drivers/Session_native.php */
+/* Location: ./system/libraries/Session/drivers/Session_native.php */
\ No newline at end of file