Skip to content

Infinite loop entered when using folder->idle() with Gmail #229

@frecco

Description

@frecco

Describe the bug
When using $folder->idle() an infinite loop is entered. Happened to discover this since i had Xdebug enabled.
It some times worked but when I started deleting mails and moving them around it stopped. Now this happens every time.

Used config
No config besides login information.

"Code to Reproduce"

 $client->connect(); $folder = $client->getFolderByName('INBOX'); $folder->idle(fn($message) => $this->handleReply($message), $timeout = 1200, $auto_reconnect = false);;

Expected behavior
Getting new mesages from INBOX.

Screenshots

PHP Fatal error: Uncaught Error: Xdebug has detected a possible infinite loop, and aborted your script with a stack depth of '256' frames in xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php:107 Stack trace: #0 xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(107): fgets() #1 xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(136): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->nextLine() #2 xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(235): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->nextTaggedLine() #3 xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(566): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->readLine() #4 /xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(690): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->getUid() ... repeats ... #244 xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(708): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->getUid() #245 xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php(708): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->getUid() #246 xxx/vendor/webklex/php-imap/src/Message.php(1386): Webklex\PHPIMAP\Connection\Protocols\ImapProtocol->getUid() #247 xxx/vendor/webklex/php-imap/src/Message.php(1422): Webklex\PHPIMAP\Message->setMsgn() #248 xxx/vendor/webklex/php-imap/src/Message.php(211): Webklex\PHPIMAP\Message->setSequenceId() #249 xxx/vendor/webklex/php-imap/src/Query/Query.php(447): Webklex\PHPIMAP\Message->__construct() #250 xxx/vendor/webklex/php-imap/src/Query/Query.php(466): Webklex\PHPIMAP\Query\Query->getMessage() #251 /xxx/vendor/webklex/php-imap/src/Folder.php(384): Webklex\PHPIMAP\Query\Query->getMessageByMsgn() #252 xxx/CheckMailController.class.php(51): Webklex\PHPIMAP\Folder->idle() #253 xxx/CheckMailController.class.php(31): XXX\CliController\CheckMailController->checkMail() #254 xxx/bin/MailMonitor.php(12): XXX\CliController\CheckMailController->run() #255 /xxx/bin/MailMonitor.php(18): XXX\Cli\MailMonitor->run() #256 {main} thrown in xxx/vendor/webklex/php-imap/src/Connection/Protocols/ImapProtocol.php on line 107 

Desktop / Server (please complete the following information):

  • OS: Debian 11
  • PHP: 8.1
  • Version v3.2.0
  • Provider Gmail

Additional context
Even if a raise the limit to max 1024 frames same thing happens.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions