From 860b451d212ad7ba0af5e32211efa2f9f708e5a4 Mon Sep 17 00:00:00 2001
From: Tyler Antonio <tantonio@ualberta.ca>
Date: Fri, 17 Jul 2015 10:57:25 -0600
Subject: [PATCH] Generate the instance ID from the configuration itself
 instead of the spl_object_id of the configuration class

---
 lib/SimpleSAML/Database.php | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/lib/SimpleSAML/Database.php b/lib/SimpleSAML/Database.php
index 16df90f5d..f9796ad6b 100644
--- a/lib/SimpleSAML/Database.php
+++ b/lib/SimpleSAML/Database.php
@@ -48,7 +48,7 @@ class SimpleSAML_Database {
 	 */
 	public static function getInstance($altConfig = null) {
 		$config = ($altConfig)? $altConfig : SimpleSAML_Configuration::getInstance();
-		$instanceId = spl_object_hash($config);
+		$instanceId = self::generateInstanceId($config);
 
 		/* Check if we already have initialized the session. */
 		if (isset(self::$instance[$instanceId])) {
@@ -85,6 +85,28 @@ class SimpleSAML_Database {
 		$this->tablePrefix = $config->getString('database.prefix', '');
 	}
 
+	/**
+	 * Generate an Instance ID based on the database
+	 * configuration.
+	 *
+	 * @param $config 			Configuration class
+	 *
+	 * @return string $instanceId
+	 */
+	private static function generateInstanceId($config){
+		$assembledConfig = array(
+			'master' => array(
+				'database.dsn' => $config->getValue('database.dsn'),
+				'database.username' => $config->getValue('database.username'),
+				'database.password' => $config->getValue('database.password'),
+				'database.persistent' => $config->getValue('database.persistent'),
+			),
+			'slaves' => $config->getValue('database.slaves'),
+		);
+
+		return sha1(serialize($assembledConfig));
+	}
+
 	/**
 	 * This function connects to a dabase.
 	 *
-- 
GitLab