From 487edf8c629e7dfd56f2588fbdd7fecace230104 Mon Sep 17 00:00:00 2001 From: alecpl Date: Thu, 5 Feb 2009 17:43:54 +0000 Subject: - Support NGINX as IMAP backend: better BAD response handling (#1485720) --- CHANGELOG | 4 ++++ program/lib/imap.inc | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index c323ae45a..9418d4821 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,10 @@ CHANGELOG RoundCube Webmail --------------------------- +2009/02/05 (alec) +---------- +- Support NGINX as IMAP backend: better BAD response handling (#1485720) + 2009/02/04 (alec) ---------- - performance fix: don't fetch attachment parts headers twice to parse filename diff --git a/program/lib/imap.inc b/program/lib/imap.inc index 7fd4aee26..302cfc007 100644 --- a/program/lib/imap.inc +++ b/program/lib/imap.inc @@ -68,7 +68,7 @@ - iil_C_HandlePartBody(): added 6th argument and fixed endless loop - added iil_PutLineC() - fixed iil_C_Sort() to support very long and/or divided responses - - added BYE response simple support for endless loop prevention + - added BYE/BAD response simple support for endless loop prevention - added 3rd argument in iil_StartsWith* functions - fix iil_C_FetchPartHeader() in some cases by use of iil_C_HandlePartBody() - allow iil_C_HandlePartBody() to fetch whole message @@ -307,8 +307,8 @@ function iil_ParseResult($string) { return -4; } -// check if $string starts with $match -function iil_StartsWith($string, $match, $bye=false) { +// check if $string starts with $match (or * BYE/BAD) +function iil_StartsWith($string, $match, $error=false) { $len = strlen($match); if ($len == 0) { return false; @@ -316,7 +316,7 @@ function iil_StartsWith($string, $match, $bye=false) { if (strncmp($string, $match, $len) == 0) { return true; } - if ($bye && strncmp($string, '* BYE ', 6) == 0) { + if ($error && preg_match('/^\* (BYE|BAD) /', $string)) { return true; } return false; -- cgit v1.2.3