From 01328a1c15fb185dc93213280abf7098b97d3c4d Mon Sep 17 00:00:00 2001 From: Andrew Staves <32958622+Andrew-Staves-Activ@users.noreply.github.com> Date: Mon, 23 May 2022 15:51:03 +0100 Subject: [PATCH 1/2] Prevent TypeError while constructing ConnectionException. Now handles \imap_errors() returning false. Addresses/avoids barbushin/php-imap#671 --- src/PhpImap/Imap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/PhpImap/Imap.php b/src/PhpImap/Imap.php index 7bc0ebbc..655c1dc8 100644 --- a/src/PhpImap/Imap.php +++ b/src/PhpImap/Imap.php @@ -709,7 +709,7 @@ public static function open( $result = @\imap_open($mailbox, $username, $password, $options, $n_retries, $params); if (!$result) { - throw new ConnectionException(\imap_errors()); + throw new ConnectionException(\imap_errors() ?: []); } return $result; From 9857a1dc4c9c5f37c51ba2a63ce7cc2da9cab41b Mon Sep 17 00:00:00 2001 From: David Palomares Date: Mon, 5 Dec 2022 16:40:45 +0100 Subject: [PATCH 2/2] Issue #680: Fix ValueError for `imap_ping()`, when the connection is already closed * Issue #680: Fix ValueError for `imap_ping()`, when the connection is already closed --- src/PhpImap/Mailbox.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/PhpImap/Mailbox.php b/src/PhpImap/Mailbox.php index 8e1803b9..02a3dad9 100644 --- a/src/PhpImap/Mailbox.php +++ b/src/PhpImap/Mailbox.php @@ -476,7 +476,17 @@ public function getImapStream(bool $forceConnection = true) public function hasImapStream(): bool { - return (\is_resource($this->imapStream) || $this->imapStream instanceof \IMAP\Connection) && \imap_ping($this->imapStream); + try { + return (\is_resource($this->imapStream) || $this->imapStream instanceof \IMAP\Connection) && \imap_ping($this->imapStream); + } catch (\Error $exception) { + // From PHP 8.1.10 imap_ping() on a closed stream throws a ValueError. See #680. + $valueError = '\ValueError'; + if (class_exists($valueError) && $exception instanceof $valueError) { + return false; + } + + throw $exception; + } } /**