From f718d72a0a1bed076243175de7b183cfce2783b6 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Thu, 8 May 2025 16:19:48 +0200 Subject: [PATCH] fix(outbox): reset status and failure flag on message update Signed-off-by: Christoph Wurst --- lib/Controller/OutboxController.php | 4 ++++ lib/Service/OutboxService.php | 3 +++ 2 files changed, 7 insertions(+) diff --git a/lib/Controller/OutboxController.php b/lib/Controller/OutboxController.php index 382333dabc..3dadf7f811 100644 --- a/lib/Controller/OutboxController.php +++ b/lib/Controller/OutboxController.php @@ -221,6 +221,10 @@ public function update( $message->setSmimeEncrypt($smimeEncrypt); $message->setRequestMdn($requestMdn); + // Updating the message should reset its status. Else it's impossible to + // retry an erroneous one. + $message->setStatus(LocalMessage::STATUS_RAW); + if (!empty($smimeCertificateId)) { $smimeCertificate = $this->smimeService->findCertificate($smimeCertificateId, $this->userId); $message->setSmimeCertificateId($smimeCertificate->getId()); diff --git a/lib/Service/OutboxService.php b/lib/Service/OutboxService.php index d8f3247c0e..7778073e54 100644 --- a/lib/Service/OutboxService.php +++ b/lib/Service/OutboxService.php @@ -172,6 +172,9 @@ public function updateMessage(Account $account, LocalMessage $message, array $to $ccRecipients = self::convertToRecipient($cc, Recipient::TYPE_CC); $bccRecipients = self::convertToRecipient($bcc, Recipient::TYPE_BCC); + // The message is changed, so any previous error should be ignored + $message->setFailed(false); + $message = $this->mapper->updateWithRecipients($message, $toRecipients, $ccRecipients, $bccRecipients); if ($attachments === []) {