X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=functions%2Fimap_general.php;h=0121a21002998256607debe03972ddde0b685199;hp=a4820491378a0bc77d75d5497ca6ec62705f9186;hb=41afe86f29a37ccf77079acfd0be9c4ef026de55;hpb=045dee91141d7f54be13c4ae7726efabdc529d10
diff --git a/functions/imap_general.php b/functions/imap_general.php
index a4820491..0121a210 100755
--- a/functions/imap_general.php
+++ b/functions/imap_general.php
@@ -5,7 +5,7 @@
*
* This implements all functions that do general IMAP functions.
*
- * @copyright © 1999-2006 The SquirrelMail Project Team
+ * @copyright © 1999-2009 The SquirrelMail Project Team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* @version $Id$
* @package squirrelmail
@@ -60,11 +60,14 @@ function sqimap_run_command_list ($imap_stream, $query, $handle_errors, &$respon
$message = $message[$tag];
$response = $response[$tag];
return $read[$tag];
+//FIXME: obey $handle_errors below!
} else {
global $squirrelmail_language, $color;
set_up_language($squirrelmail_language);
+//FIXME: NO HTML IN CORE!
$string = "\n" .
_("ERROR: No available IMAP stream.") .
+//FIXME: NO HTML IN CORE!
"\n";
error_box($string);
return false;
@@ -110,11 +113,14 @@ function sqimap_run_command ($imap_stream, $query, $handle_errors, &$response,
} else {
return $read[$tag];
}
+//FIXME: obey $handle_errors below!
} else {
global $squirrelmail_language, $color;
set_up_language($squirrelmail_language);
+//FIXME: NO HTML IN CORE!
$string = "\n" .
_("ERROR: No available IMAP stream.") .
+//FIXME: NO HTML IN CORE!
"\n";
error_box($string);
return false;
@@ -316,8 +322,10 @@ function sqimap_read_data_list($imap_stream, $tag, $handle_errors,
&$response, &$message, $query = '') {
global $color, $oTemplate, $squirrelmail_language;
set_up_language($squirrelmail_language);
+//FIXME: NO HTML IN CORE!
$string = "\n" .
_("ERROR: Bad function call.") .
+//FIXME: NO HTML IN CORE!
"
\n" .
_("Reason:") . ' '.
'There is a plugin installed which make use of the
' .
@@ -325,6 +333,7 @@ function sqimap_read_data_list($imap_stream, $tag, $handle_errors,
'Please adapt the installed plugin and let it use
'.
'sqimap_run_command or sqimap_run_command_list instead
'.
'The following query was issued:
'.
+//FIXME: NO HTML IN CORE!
htmlspecialchars($query) . '
' . "
\n";
error_box($string);
$oTemplate->display('footer.tpl');
@@ -346,6 +355,7 @@ function sqimap_error_box($title, $query = '', $message_title = '', $message = '
global $color, $squirrelmail_language;
set_up_language($squirrelmail_language);
+//FIXME: NO HTML IN CORE!
$string = "\n" . $title . "
\n";
$cmd = explode(' ',$query);
$cmd= strtolower($cmd[0]);
@@ -356,6 +366,7 @@ function sqimap_error_box($title, $query = '', $message_title = '', $message = '
$string .= $message_title;
if ($message != '')
$string .= htmlspecialchars($message);
+//FIXME: NO HTML IN CORE!
$string .= "
\n";
if ($link != '')
$string .= $link;
@@ -466,6 +477,7 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
we prohibid that literal responses appear in the
outer loop so we can trust the untagged and
tagged info provided by $read */
+ $read_literal = false;
if ($s === "}\r\n") {
$j = strrpos($read,'{');
$iLit = substr($read,$j+1,-3);
@@ -490,7 +502,9 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
if ($read === false) { /* error */
break 4; /* while while switch while */
}
- $fetch_data[] = $read;
+ $s = substr($read,-3);
+ $read_literal = true;
+ continue;
} else {
$fetch_data[] = $read;
}
@@ -503,7 +517,7 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
/* check for next untagged reponse and break */
if ($read{0} == '*') break 2;
$s = substr($read,-3);
- } while ($s === "}\r\n");
+ } while ($s === "}\r\n" || $read_literal);
$s = substr($read,-3);
} while ($read{0} !== '*' &&
substr($read,0,strlen($tag)) !== $tag);
@@ -516,14 +530,21 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
if ($s === "}\r\n") {
$j = strrpos($read,'{');
$iLit = substr($read,$j+1,-3);
- $data[] = $read;
- $sLiteral = fread($imap_stream,$iLit);
- if ($sLiteral === false) { /* error */
- $read = false;
- break 3; /* while switch while */
+ // check for numeric value to avoid that untagged responses like:
+ // * OK [PARSE] Unexpected characters at end of address: {SET:debug=51}
+ // will trigger literal fetching ({SET:debug=51} !== int )
+ if (is_numeric($iLit)) {
+ $data[] = $read;
+ $sLiteral = fread($imap_stream,$iLit);
+ if ($sLiteral === false) { /* error */
+ $read = false;
+ break 3; /* while switch while */
+ }
+ $data[] = $sLiteral;
+ $data[] = sqimap_fgets($imap_stream);
+ } else {
+ $data[] = $read;
}
- $data[] = $sLiteral;
- $data[] = sqimap_fgets($imap_stream);
} else {
$data[] = $read;
}
@@ -551,6 +572,7 @@ function sqimap_retrieve_imap_response($imap_stream, $tag, $handle_errors,
$query = '';
}
sqimap_error_box(_("ERROR: IMAP server closed the connection."), $query, _("Server responded:"),$sResponse);
+//FIXME: NO HTML IN CORE!
echo '