alecpl
2009-05-09 26d857447f5a9d2e8a9c44fd5707a18523926e1d
- Fix session handling on non-session SQL query error (#1485734)


3 files modified
33 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_mdb2.php 16 ●●●●● patch | view | raw | blame | history
program/include/session.inc 16 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Fix session handling on non-session SQL query error (#1485734)
- Fix html editor mode setting when reopening draft message (#1485834)
- Added quick search box menu (#1484304)
- Fix wrong column sort order icons (#1485823)
program/include/rcube_mdb2.php
@@ -178,6 +178,17 @@
    
  /**
   * Connection state checker
   *
   * @param  boolean  True if in connected state
   */
  function is_connected()
    {
    return PEAR::isError($this->db_handle) ? false : true;
    }
  /**
   * Execute a SQL query
   *
   * @param  string  SQL query to execute
@@ -187,6 +198,9 @@
   */
  function query()
    {
    if (!$this->is_connected())
      return NULL;
    $params = func_get_args();
    $query = array_shift($params);
@@ -360,7 +374,7 @@
   */
  function _fetch_row($result, $mode)
    {
    if ($result === FALSE || PEAR::isError($result))
    if ($result === FALSE || PEAR::isError($result) || !$this->is_connected())
      return FALSE;
    return $result->fetchRow($mode);
program/include/session.inc
@@ -39,10 +39,6 @@
  
  $DB = rcmail::get_instance()->get_dbh();
  
  if ($DB->is_error()) {
    return false;
  }
  $sql_result = $DB->query(
    "SELECT vars, ip, " . $DB->unixtimestamp('changed') . " AS changed
     FROM " . get_table_name('session') . "
@@ -66,10 +62,6 @@
{
  $DB = rcmail::get_instance()->get_dbh();
  
  if ($DB->is_error()) {
    return false;
  }
  $sql_result = $DB->query(
    "SELECT 1 FROM " . get_table_name('session') . "
     WHERE  sess_id=?",
@@ -105,10 +97,6 @@
  $rcmail = rcmail::get_instance();
  $DB = $rcmail->get_dbh();
  
  if ($DB->is_error()) {
    return false;
  }
  $DB->query("DELETE FROM " . get_table_name('session') . " WHERE sess_id=?", $key);
  return true;
@@ -120,10 +108,6 @@
{
  $rcmail = rcmail::get_instance();
  $DB = $rcmail->get_dbh();
  if ($DB->is_error()) {
    return false;
  }
  // just delete all expired sessions
  $DB->query("DELETE FROM " . get_table_name('session') . "