From 6007fb5363d40ab0e4cc60c6092226a5a02d59be Mon Sep 17 00:00:00 2001 From: Ralf Becker Date: Fri, 24 Jul 2020 16:36:42 +0200 Subject: [PATCH] fix broken token/syntax, if no metadata yet --- api/src/Mail/Imap.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/api/src/Mail/Imap.php b/api/src/Mail/Imap.php index 73b8f5643f..d5022fc34f 100644 --- a/api/src/Mail/Imap.php +++ b/api/src/Mail/Imap.php @@ -1438,7 +1438,7 @@ class Imap extends Horde_Imap_Client_Socket implements Imap\PushIface { if (!isset($token)) $token = ((string)$account_id === '0' ? Tokens::instance() : Tokens::user($account_id)); - return self::METADATA_PREFIX.$GLOBALS['egw_info']['user']['account_id'].'::'.$this->acc_id.';'. + return $GLOBALS['egw_info']['user']['account_id'].'::'.$this->acc_id.';'. $token . '@' . Api\Header\Http::host(); } @@ -1455,8 +1455,8 @@ class Imap extends Horde_Imap_Client_Socket implements Imap\PushIface return false; } try { - $metadata = explode(self::METADATA_SEPARATOR, - $this->getMetadata(self::METADATA_MAILBOX, [self::METADATA_NAME])[self::METADATA_MAILBOX][self::METADATA_NAME]) ?: []; + $metadata = ($m = $this->getMetadata(self::METADATA_MAILBOX, [self::METADATA_NAME])[self::METADATA_MAILBOX][self::METADATA_NAME]) ? + explode(self::METADATA_SEPARATOR, substr($m, strlen(self::METADATA_PREFIX))) : []; $my_token = $this->pushToken($account_id); $my_token_preg = '/^'.$this->pushToken($account_id, '[^@]+').'$/'; foreach($metadata as $key => $token) @@ -1474,7 +1474,7 @@ class Imap extends Horde_Imap_Client_Socket implements Imap\PushIface // add my token and send it to Dovecot $metadata[] = $my_token; $this->setMetadata(self::METADATA_MAILBOX, [ - self::METADATA_NAME => implode(self::METADATA_SEPARATOR, $metadata), + self::METADATA_NAME => self::METADATA_PREFIX.implode(self::METADATA_SEPARATOR, $metadata), ]); } catch (Horde_Imap_Client_Exception $e) {