summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2007-11-25 16:23:10 +0000
committerthomascube <thomas@roundcube.net>2007-11-25 16:23:10 +0000
commit644e27e5543d35b095ef2a6e0612f0a26626d1f8 (patch)
tree5f18b616237a5a772f4b3d7c0808f750e2d9ce82 /program
parentb2ff3d44610e1836fe7080a7afffdf4f6ebd32da (diff)
Applied UID fetch patch by Glen Ogilvie
Diffstat (limited to 'program')
-rw-r--r--program/lib/imap.inc13
1 files changed, 12 insertions, 1 deletions
diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index 264c3af50..ed2111c57 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -1266,7 +1266,18 @@ function iil_C_FetchHeaders(&$conn, $mailbox, $message_set, $uidfetch=false){
$i++;
$lines[$i] = trim(chop($line));
}
- }while($line[0]!=")" && strncmp($line, $key, strlen($key))); // patch from "Maksim Rubis" <siburny@hotmail.com>
+ /*
+ The preg_match below works around communigate imap, which outputs " UID <number>)".
+ Without this, the while statement continues on and gets the "fh0 OK completed" message.
+ If this loop gets the ending message, then the outer loop does not receive it from radline on line 1249.
+ This in causes the if statement on line 1278 to never be true, which causes the headers to end up missing
+ If the if statement was changed to pick up the fh0 from this loop, then it causes the outer loop to spin
+ An alternative might be:
+ if (!preg_match("/:/",$line) && preg_match("/\)$/",$line)) break;
+ however, unsure how well this would work with all imap clients.
+ */
+ if (preg_match("/^\s*UID [0-9]+\)$/",$line)) break;
+ }while(trim($line[0])!=")" && strncmp($line, $key, strlen($key))); // patch from "Maksim Rubis" <siburny@hotmail.com>
if(strncmp($line, $key, strlen($key)))
{