From ab6b9bb412ae784335004956989b57eb382f9f80 Mon Sep 17 00:00:00 2001 From: djmaze <> Date: Thu, 6 Jan 2022 13:16:18 +0100 Subject: [PATCH] Speedup IMAP FETCH response --- .../libraries/MailSo/Imap/FetchResponse.php | 40 ++++--------------- .../app/libraries/MailSo/Imap/ImapClient.php | 4 +- 2 files changed, 10 insertions(+), 34 deletions(-) diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/FetchResponse.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/FetchResponse.php index 5348d2dc8..bef220f32 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/FetchResponse.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/FetchResponse.php @@ -157,43 +157,19 @@ class FetchResponse return ''; } - private static function findFetchUidAndSize(array $aList) : bool + public static function isValidImapResponse(Response $oImapResponse) : bool { - $bUid = false; - $bSize = false; - foreach ($aList as $mItem) - { - if (Enumerations\FetchType::UID === $mItem) - { - $bUid = true; - } - else if (Enumerations\FetchType::RFC822_SIZE === $mItem) - { - $bSize = true; - } - } - return $bUid && $bSize; - } - - public static function IsValidFetchImapResponse(Response $oImapResponse) : bool - { - return ( - $oImapResponse - && true !== $oImapResponse->IsStatusResponse + return + true !== $oImapResponse->IsStatusResponse && Enumerations\ResponseType::UNTAGGED === $oImapResponse->ResponseType - && 3 < count($oImapResponse->ResponseList) && 'FETCH' === $oImapResponse->ResponseList[2] - && is_array($oImapResponse->ResponseList[3]) - ); + && 3 < \count($oImapResponse->ResponseList) && 'FETCH' === $oImapResponse->ResponseList[2] + && \is_array($oImapResponse->ResponseList[3]); } - public static function IsNotEmptyFetchImapResponse(Response $oImapResponse) : bool + public static function hasUidAndSize(Response $oImapResponse) : bool { - return ( - $oImapResponse - && self::IsValidFetchImapResponse($oImapResponse) - && isset($oImapResponse->ResponseList[3]) - && self::findFetchUidAndSize($oImapResponse->ResponseList[3]) - ); + return \in_array(Enumerations\FetchType::UID, $oImapResponse->ResponseList[3]) + && \in_array(Enumerations\FetchType::RFC822_SIZE, $oImapResponse->ResponseList[3]); } /** diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php index 6a8ba7e22..fea8759ea 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Imap/ImapClient.php @@ -883,8 +883,8 @@ class ImapClient extends \MailSo\Net\NetClient $this->SendRequest($bIndexIsUid ? 'UID FETCH' : 'FETCH', $aParams); foreach ($this->yieldUntaggedResponses() as $oResponse) { - if (FetchResponse::IsValidFetchImapResponse($oResponse)) { - if (FetchResponse::IsNotEmptyFetchImapResponse($oResponse)) { + if (FetchResponse::isValidImapResponse($oResponse)) { + if (FetchResponse::hasUidAndSize($oResponse)) { $aReturn[] = new FetchResponse($oResponse); } else if ($this->oLogger) { $this->oLogger->Write('Skipped Imap Response! ['.$oResponse->ToLine().']', \MailSo\Log\Enumerations\Type::NOTICE);