summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2007-07-03 17:37:20 +0000
committerthomascube <thomas@roundcube.net>2007-07-03 17:37:20 +0000
commit9e0bb6bcdedd113b7a1496defb5daef98be3dde0 (patch)
tree6c3ec3ecadf945dc2c91d80d3ea1b0d3cc2ceb4a
parent3fc00e67bbfa5bad7b0d29d268545036f6dc684d (diff)
Applied socket error patch by Thomas Mangin
-rw-r--r--CHANGELOG1
-rw-r--r--program/lib/imap.inc11
2 files changed, 9 insertions, 3 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 95c3b5763..e0a4c3f00 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -6,6 +6,7 @@ CHANGELOG RoundCube Webmail
- Added Macedonian (Slavic FYROM) localization
- Fix status message bug #1484464 with regard to #1484353
- Fix address adding bug reported by David Koblas
+- Applied socket error patch by Thomas Mangin
2007/06/28 (tomekp)
diff --git a/program/lib/imap.inc b/program/lib/imap.inc
index 6bc47a198..05b1c00e1 100644
--- a/program/lib/imap.inc
+++ b/program/lib/imap.inc
@@ -48,6 +48,7 @@
- Also acceppt LIST responses in iil_C_ListSubscribed()
- Sanity check of $message_set in iil_C_FetchHeaders(), iil_C_FetchHeaderIndex(), iil_C_FetchThreadHeaders()
- Implemented UID FETCH in iil_C_FetchHeaders()
+ - Abort do-loop on socket errors (fgets returns false)
- Removed some debuggers (echo ...)
********************************************************/
@@ -130,6 +131,8 @@ function iil_ReadLine($fp, $size){
if ($fp){
do{
$buffer = fgets($fp, 2048);
+ if ($buffer === false)
+ break;
$line.=$buffer;
}while($buffer[strlen($buffer)-1]!="\n");
}
@@ -229,9 +232,11 @@ function iil_C_Login(&$conn, $user, $password){
$password = strtr($password, array('"'=>'\\"', '\\' => '\\\\'));
fputs($conn->fp, "a001 LOGIN $user \"$password\"\r\n");
- do{
- $line = iil_ReadReply($conn->fp);
- }while(!iil_StartsWith($line, "a001 "));
+ do{
+ $line = iil_ReadReply($conn->fp);
+ if ($line === false)
+ break;
+ }while(!iil_StartsWith($line, "a001 "));
$a=explode(" ", $line);
if (strcmp($a[1],"OK")==0){
$result=$conn->fp;