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