From ef5f7fb13c437496467da0ea29e32bb5750da507 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Fri, 06 Jul 2012 04:10:30 -0400
Subject: [PATCH] There's a case (reason unknown) when destroy() is called with empty session key. Handle this case properly to prevent from PHP error: Memcache::delete(): Key cannot be empty.

---
 program/include/rcube_session.php |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/program/include/rcube_session.php b/program/include/rcube_session.php
index 09a07d6..e3b5600 100644
--- a/program/include/rcube_session.php
+++ b/program/include/rcube_session.php
@@ -218,13 +218,14 @@
    * Handler for session_destroy()
    *
    * @param string Session ID
+   *
    * @return boolean True on success
    */
   public function db_destroy($key)
   {
-    $this->db->query(
-      sprintf("DELETE FROM %s WHERE sess_id = ?", $this->db->table_name('session')),
-      $key);
+    if ($key) {
+      $this->db->query(sprintf("DELETE FROM %s WHERE sess_id = ?", $this->db->table_name('session')), $key);
+    }
 
     return true;
   }
@@ -305,11 +306,16 @@
    * Handler for session_destroy() with memcache backend
    *
    * @param string Session ID
+   *
    * @return boolean True on success
    */
   public function mc_destroy($key)
   {
-    return $this->memcache->delete($key);
+    if ($key) {
+      $this->memcache->delete($key);
+    }
+
+    return true;
   }
 
 

--
Gitblit v1.9.1