From 4a63f1efaff83dd03e663ed1a432a15dc0100be3 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 07 Sep 2009 03:53:01 -0400
Subject: [PATCH] - Fix roundcube hangs on empty inbox with bincimapd (#1486093)
---
CHANGELOG | 1 +
program/include/rcube_imap.php | 6 ++++--
program/lib/imap.inc | 10 +++++-----
3 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index af6306d..aff6dad 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
+- Fix roundcube hangs on empty inbox with bincimapd (#1486093)
- Fix wrong headers for IE on servers without $_SERVER['HTTPS'] (#1485926)
- Force IE style headers for attachments in non-HTTPS session, 'use_https' option (#1485655)
- Check 'post_max_size' for upload max filesize (#1486089)
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 3d8cb84..f172931 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2228,8 +2228,10 @@
$msg_count = $this->_messagecount($mailbox);
$cache_count = count($cache_index);
- // console("Cache check: $msg_count !== ".count($cache_index));
-
+ // empty mailbox
+ if (!$msg_count)
+ return $cache_count ? -2 : 1;
+
if ($cache_count==$msg_count) {
if ($this->skip_deleted) {
$h_index = iil_C_FetchHeaderIndex($this->conn, $mailbox, "1:*", 'UID', $this->skip_deleted);
diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index 02c9bd9..c640c56 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -1510,11 +1510,11 @@
preg_match('/ BODY\[HEADER.FIELDS \(.*?\)\]\s*(.*)$/s', $line, $m);
$reslines = explode("\n", trim($m[1], '"'));
// re-parse (see below)
- foreach ($reslines as $line) {
- if (ord($line[0])<=32) {
- $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($line);
+ foreach ($reslines as $resln) {
+ if (ord($resln[0])<=32) {
+ $l[$ln] .= (empty($lines[$ln])?'':"\n").trim($resln);
} else {
- $lines[++$ln] = trim($line);
+ $lines[++$ln] = trim($resln);
}
}
}
@@ -1668,7 +1668,7 @@
}
}
}
- } while (strcmp($a[0], $key) != 0);
+ } while (!iil_StartsWith($line, $key, true));
return $result;
}
--
Gitblit v1.9.1