- Fix endless loop on error response for APPEND command (#1486060)

release-0.6
alecpl 15 years ago
parent 16506fbe39
commit b8ae99a6b3

@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Fix endless loop on error response for APPEND command (#1486060)
- Don't require date.timezone setting in installer (#1485989)
- Fix date sorting problem with Courier IMAP server (#1486065)
- Unselect pressed buttons on mouse up (#1485987)

@ -38,7 +38,7 @@ INSTALLATION
- /logs
3. Create a new database and a database user for RoundCube (see DATABASE SETUP)
4. Point your browser to http://url-to-roundcube/installer/
5. Follow the instructions of the install script (or see MANUAL CONFINGURATION)
5. Follow the instructions of the install script (or see MANUAL CONFIGURATION)
6. After creating and testing the configuration, remove the installer directory
7. Done!

@ -301,8 +301,8 @@ function iil_ReadReply($fp) {
}
function iil_ParseResult($string) {
$a = explode(' ', $string);
if (count($a) > 2) {
$a = explode(' ', trim($string));
if (count($a) >= 2) {
if (strcasecmp($a[1], 'OK') == 0) {
return 0;
} else if (strcasecmp($a[1], 'NO') == 0) {
@ -311,7 +311,7 @@ function iil_ParseResult($string) {
return -2;
} else if (strcasecmp($a[1], 'BYE') == 0) {
return -3;
}
}
}
return -4;
}
@ -2125,8 +2125,8 @@ function iil_C_Subscribe(&$conn, $folder) {
$query = 'sub1 SUBSCRIBE "' . iil_Escape($folder). '"';
iil_PutLine($fp, $query);
$line = trim(iil_ReadLine($fp, 10000));
return iil_ParseResult($line);
$line = trim(iil_ReadLine($fp, 512));
return (iil_ParseResult($line) == 0);
}
function iil_C_UnSubscribe(&$conn, $folder) {
@ -2135,8 +2135,8 @@ function iil_C_UnSubscribe(&$conn, $folder) {
$query = 'usub1 UNSUBSCRIBE "' . iil_Escape($folder) . '"';
iil_PutLine($fp, $query);
$line = trim(iil_ReadLine($fp, 10000));
return iil_ParseResult($line);
$line = trim(iil_ReadLine($fp, 512));
return (iil_ParseResult($line) == 0);
}
function iil_C_FetchMIMEHeaders(&$conn, $mailbox, $id, $parts) {
@ -2371,31 +2371,39 @@ function iil_C_DeleteFolder(&$conn, $folder) {
function iil_C_Append(&$conn, $folder, &$message) {
if (!$folder) {
return false;
return false;
}
$fp = $conn->fp;
$message = str_replace("\r", '', $message);
$message = str_replace("\n", "\r\n", $message);
$message = str_replace("\n", "\r\n", $message);
$len = strlen($message);
if (!$len) {
return false;
return false;
}
$request = 'a APPEND "' . iil_Escape($folder) .'" (\\Seen) {' . $len . '}';
if (iil_PutLine($fp, $request)) {
$line = iil_ReadLine($fp, 100);
$sent = iil_PutLine($fp, $message);
$line = iil_ReadLine($fp, 512);
$result = (iil_ParseResult($line) == 0);
if (!$result) {
$conn->error .= "Cannot write to folder: $line\n";
return false;
}
iil_PutLine($fp, $message);
do {
$line=iil_ReadLine($fp);
$line = iil_ReadLine($fp);
} while (!iil_StartsWith($line, 'a ', true));
$result = (iil_ParseResult($line) == 0);
if (!$result) {
$conn->error .= $line . "\n";
}
}
return $result;
}
@ -2409,7 +2417,7 @@ function iil_C_AppendFromFile(&$conn, $folder, $path) {
}
//open message file
$in_fp = false;
$in_fp = false;
if (file_exists(realpath($path))) {
$in_fp = fopen($path, 'r');
}
@ -2426,14 +2434,18 @@ function iil_C_AppendFromFile(&$conn, $folder, $path) {
//send APPEND command
$request = 'a APPEND "' . iil_Escape($folder) . '" (\\Seen) {' . $len . '}';
$bytes_sent = 0;
if (iil_PutLine($fp, $request)) {
$line = iil_ReadLine($fp, 100);
$line = iil_ReadLine($fp, 512);
$result = (iil_ParseResult($line) == 0);
if (!$result) {
$conn->error .= "Cannot write to folder: $line\n";
return false;
}
//send file
while (!feof($in_fp)) {
$buffer = fgets($in_fp, 4096);
$bytes_sent += strlen($buffer);
iil_PutLine($fp, $buffer, false);
}
fclose($in_fp);
@ -2444,12 +2456,12 @@ function iil_C_AppendFromFile(&$conn, $folder, $path) {
do {
$line = iil_ReadLine($fp);
} while (!iil_StartsWith($line, 'a ', true));
$result = (iil_ParseResult($line) == 0);
if (!$result) {
$conn->error .= $line . "\n";
}
return $result;
}

Loading…
Cancel
Save