From 5f4e11eb9749e2011ce829e4e3f6e333172b4f72 Mon Sep 17 00:00:00 2001 From: Michael M Slusarz Date: Tue, 18 May 2010 13:37:17 -0600 Subject: [PATCH] Only report destroy() success from master handler. --- .../SessionHandler/lib/Horde/SessionHandler/Stack.php | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/framework/SessionHandler/lib/Horde/SessionHandler/Stack.php b/framework/SessionHandler/lib/Horde/SessionHandler/Stack.php index c06e9441e..76c82d4a9 100644 --- a/framework/SessionHandler/lib/Horde/SessionHandler/Stack.php +++ b/framework/SessionHandler/lib/Horde/SessionHandler/Stack.php @@ -110,7 +110,7 @@ class Horde_SessionHandler_Stack extends Horde_SessionHandler_Driver protected function _write($id, $session_data) { /* Do writes in *reverse* order - it is OK if a write to one of the - * non-masters backend fails. */ + * non-master backends fails. */ $master = true; foreach (array_reverse($this->_stack) as $val) { @@ -139,14 +139,18 @@ class Horde_SessionHandler_Stack extends Horde_SessionHandler_Driver */ public function destroy($id) { - foreach ($this->_stack as $val) { + /* Only report success from master. */ + $master = $success = true; + + foreach (array_reverse($this->_stack) as $val) { $result = $val->destroy($id); - if ($result === false) { - return false; + if ($master && ($result === false)) { + $success = false; } + $master = false; } - return true; + return $success; } /** -- 2.11.0