From f06aa8058b7e32ba32d4551074b6e0b8a300f751 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Mon, 21 Oct 2013 15:02:40 -0400 Subject: [PATCH] Bump version after security fix --- program/include/rcube_imap_cache.php | 32 +++++++++++++++++++++++++++----- 1 files changed, 27 insertions(+), 5 deletions(-) diff --git a/program/include/rcube_imap_cache.php b/program/include/rcube_imap_cache.php index 96c49f7..b295bac 100644 --- a/program/include/rcube_imap_cache.php +++ b/program/include/rcube_imap_cache.php @@ -314,10 +314,10 @@ $uid = intval($sql_arr['uid']); $result[$uid] = $this->build_message($sql_arr); - // save memory, we don't need message body here (?) - $result[$uid]->body = null; - if (!empty($result[$uid])) { + // save memory, we don't need message body here (?) + $result[$uid]->body = null; + unset($msgs[$uid]); } } @@ -353,8 +353,9 @@ function get_message($mailbox, $uid, $update = true, $cache = true) { // Check internal cache - if (($message = $this->icache['message']) - && $message['mailbox'] == $mailbox && $message['object']->uid == $uid + if ($this->icache['message'] + && $this->icache['message']['mailbox'] == $mailbox + && $this->icache['message']['object']->uid == $uid ) { return $this->icache['message']['object']; } @@ -599,6 +600,27 @@ /** + * Delete cache entries older than TTL + * + * @param string $ttl Lifetime of message cache entries + */ + function expunge($ttl) + { + // get expiration timestamp + $ts = get_offset_time($ttl, -1); + + $this->db->query("DELETE FROM ".get_table_name('cache_messages') + ." WHERE changed < " . $this->db->fromunixtime($ts)); + + $this->db->query("DELETE FROM ".get_table_name('cache_index') + ." WHERE changed < " . $this->db->fromunixtime($ts)); + + $this->db->query("DELETE FROM ".get_table_name('cache_thread') + ." WHERE changed < " . $this->db->fromunixtime($ts)); + } + + + /** * Fetches index data from database */ private function get_index_row($mailbox) -- Gitblit v1.9.1