From 4769ead5e8fa2cbee61ac6675d499cb16d7ffb7c Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Sun, 10 May 2009 04:37:11 -0400
Subject: [PATCH] - prevent infinite loop on imap error in iil_C_HandlePartBody()
---
program/lib/imap.inc | 15 +++++++--------
1 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index f7a46d6..1295d5f 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -2323,7 +2323,7 @@
if (iil_C_Select($conn, $mailbox)) {
$reply_key = '* ' . $id;
-
+
// format request
$key = 'ftch' . ($c++) . ' ';
$request = $key . "FETCH $id (BODY.PEEK[$part])";
@@ -2336,7 +2336,7 @@
do {
$line = chop(iil_ReadLine($fp, 1000));
$a = explode(' ', $line);
- } while ($a[2] != 'FETCH');
+ } while (!($end = iil_StartsWith($line, $key, true)) && $a[2] != 'FETCH');
$len = strlen($line);
// handle empty "* X FETCH ()" response
@@ -2407,9 +2407,10 @@
}
}
// read in anything up until last line
- do {
- $line = iil_ReadLine($fp, 1024);
- } while (!iil_StartsWith($line, $key, true));
+ if (!$end)
+ do {
+ $line = iil_ReadLine($fp, 1024);
+ } while (!iil_StartsWith($line, $key, true));
if ($mode == 3 && $file) {
return true;
@@ -2425,12 +2426,10 @@
}
return false;
- } else {
- echo 'Select failed.';
}
if ($mode==1) {
- if ($file) {
+ if ($file && $result) {
fwrite($file, $result);
return true;
}
--
Gitblit v1.9.1