From 6d5dbae53cd4b4b97da0b0c558292a7f1062a524 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Fri, 25 Jul 2008 11:13:15 -0400
Subject: [PATCH] Prefer File_Info over mime_content_type + detect mime type when uploading + some code style

---
 program/include/session.inc |   44 ++++++++++++++++++++++++++------------------
 1 files changed, 26 insertions(+), 18 deletions(-)

diff --git a/program/include/session.inc b/program/include/session.inc
index a4952d1..ef8eb27 100644
--- a/program/include/session.inc
+++ b/program/include/session.inc
@@ -26,7 +26,6 @@
   }
 
 
-
 function sess_close()
   {
   return TRUE;
@@ -89,9 +88,7 @@
                 VALUES (?, ?, ?, ".$DB->now().", ".$DB->now().")",
                 $key,
                 $vars,
-                $_SERVER['REMOTE_ADDR']);
-                
-
+                (string)$_SERVER['REMOTE_ADDR']);
     }
 
   return TRUE;
@@ -101,15 +98,18 @@
 // handler for session_destroy()
 function sess_destroy($key)
   {
-  global $DB;
+  global $DB, $CONFIG;
   
   if ($DB->is_error())
     return FALSE;
-  
-  // delete session entries in cache table
-  $DB->query("DELETE FROM ".get_table_name('cache')."
-              WHERE  session_id=?",
+
+  if ($CONFIG['enable_caching'])
+    {
+    // delete session entries in cache table
+    $DB->query("DELETE FROM ".get_table_name('cache')."
+              WHERE session_id=?",
               $key);
+    }
               
   $DB->query("DELETE FROM ".get_table_name('session')."
               WHERE sess_id=?",
@@ -122,7 +122,7 @@
 // garbage collecting function
 function sess_gc($maxlifetime)
   {
-  global $DB;
+  global $DB, $CONFIG;
 
   if ($DB->is_error())
     return FALSE;
@@ -137,20 +137,23 @@
   while ($sql_arr = $DB->fetch_assoc($sql_result))
     $a_exp_sessions[] = $sql_arr['sess_id'];
 
-  
   if (sizeof($a_exp_sessions))
     {
-    // delete session cache records
-    $DB->query("DELETE FROM ".get_table_name('cache')."
-                WHERE  session_id IN ('".join("','", $a_exp_sessions)."')");
-                
+    if ($CONFIG['enable_caching'])
+      {
+        // delete session cache records
+	$DB->query("DELETE FROM ".get_table_name('cache')."
+                WHERE session_id IN ('".join("','", $a_exp_sessions)."')");
+      }
+                  
     // delete session records
     $DB->query("DELETE FROM ".get_table_name('session')."
                 WHERE sess_id IN ('".join("','", $a_exp_sessions)."')");
     }
 
   // also run message cache GC
-  rcmail_message_cache_gc();
+  if ($CONFIG['enable_caching'])
+    rcmail_message_cache_gc();
   rcmail_temp_gc();
 
   return TRUE;
@@ -172,8 +175,13 @@
   sess_destroy(session_id());
 
   session_id($random);
-  $cookie = session_get_cookie_params();
-  setcookie(session_name(), $random, $cookie['lifetime'], $cookie['path']);
+
+  $cookie    = session_get_cookie_params();
+  $_lifetime = $cookie['lifetime'] ? time() + $cookie['lifetime'] : 0;
+
+  setcookie(session_name(), '', time() - 3600);
+  setcookie(session_name(), $random, $_lifetime, $cookie['path'],
+    $cookie['domain']);
 
   return true;
   }

--
Gitblit v1.9.1