feature/session (#3073): Refactor configuration & fix cookie expiry times
diff --git a/system/libraries/Session/drivers/Session_redis_driver.php b/system/libraries/Session/drivers/Session_redis_driver.php
index 6d8044d..ef18def 100644
--- a/system/libraries/Session/drivers/Session_redis_driver.php
+++ b/system/libraries/Session/drivers/Session_redis_driver.php
@@ -38,13 +38,6 @@
 class CI_Session_redis_driver extends CI_Session_driver implements SessionHandlerInterface {
 
 	/**
-	 * Save path
-	 *
-	 * @var	string
-	 */
-	protected $_save_path;
-
-	/**
 	 * phpRedis instance
 	 *
 	 * @var	resource
@@ -77,14 +70,14 @@
 	{
 		parent::__construct($params);
 
-		if (empty($this->_save_path))
+		if (empty($this->_config['save_path']))
 		{
 			log_message('error', 'Session: No Redis save path configured.');
 		}
-		elseif (preg_match('#(?:tcp://)?([^:?]+)(?:\:(\d+))?(\?.+)?#', $this->_save_path, $matches))
+		elseif (preg_match('#(?:tcp://)?([^:?]+)(?:\:(\d+))?(\?.+)?#', $this->_config['save_path'], $matches))
 		{
 			isset($matches[3]) OR $matches[3] = ''; // Just to avoid undefined index notices below
-			$this->_save_path = array(
+			$this->_config['save_path'] = array(
 				'host' => $matches[1],
 				'port' => empty($matches[2]) ? NULL : $matches[2],
 				'password' => preg_match('#auth=([^\s&]+)#', $matches[3], $match) ? $match[1] : NULL,
@@ -96,10 +89,10 @@
 		}
 		else
 		{
-			log_message('error', 'Session: Invalid Redis save path format: '.$this->_save_path);
+			log_message('error', 'Session: Invalid Redis save path format: '.$this->_config['save_path']);
 		}
 
-		if ($this->_match_ip === TRUE)
+		if ($this->_config['match_ip'] === TRUE)
 		{
 			$this->_key_prefix .= $_SERVER['REMOTE_ADDR'].':';
 		}
@@ -109,23 +102,23 @@
 
 	public function open($save_path, $name)
 	{
-		if (empty($this->_save_path))
+		if (empty($this->_config['save_path']))
 		{
 			return FALSE;
 		}
 
 		$redis = new Redis();
-		if ( ! $redis->connect($this->_save_path['host'], $this->_save_path['port'], $this->_save_path['timeout']))
+		if ( ! $redis->connect($this->_config['save_path']['host'], $this->_config['save_path']['port'], $this->_config['save_path']['timeout']))
 		{
 			log_message('error', 'Session: Unable to connect to Redis with the configured settings.');
 		}
-		elseif (isset($this->_save_path['password']) && ! $redis->auth($this->_save_path['password']))
+		elseif (isset($this->_config['save_path']['password']) && ! $redis->auth($this->_config['save_path']['password']))
 		{
 			log_message('error', 'Session: Unable to authenticate to Redis instance.');
 		}
-		elseif (isset($this->_save_path['database']) && ! $redis->select($this->_save_path['database']))
+		elseif (isset($this->_config['save_path']['database']) && ! $redis->select($this->_config['save_path']['database']))
 		{
-			log_message('error', 'Session: Unable to select Redis database with index '.$this->_save_path['database']);
+			log_message('error', 'Session: Unable to select Redis database with index '.$this->_config['save_path']['database']);
 		}
 		else
 		{
@@ -157,7 +150,7 @@
 			$this->_redis->setTimeout($this->_lock_key, 5);
 			if ($this->_fingerprint !== ($fingerprint = md5($session_data)))
 			{
-				if ($this->_redis->set($this->_key_prefix.$session_id, $session_data, $this->_expiration))
+				if ($this->_redis->set($this->_key_prefix.$session_id, $session_data, $this->_config['expiration']))
 				{
 					$this->_fingerprint = $fingerprint;
 					return TRUE;
@@ -166,7 +159,7 @@
 				return FALSE;
 			}
 
-			return $this->_redis->setTimeout($this->_key_prefix.$session_id, $this->_expiration);
+			return $this->_redis->setTimeout($this->_key_prefix.$session_id, $this->_config['expiration']);
 		}
 
 		return FALSE;