]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: imapc_copy() - Make sure capabilities are known before copying
authorMarkus Valentin <markus.valentin@open-xchange.com>
Thu, 16 Dec 2021 08:11:55 +0000 (09:11 +0100)
committerMarkus Valentin <markus.valentin@open-xchange.com>
Mon, 14 Mar 2022 13:06:49 +0000 (14:06 +0100)
src/lib-storage/index/imapc/imapc-save.c

index bea825ab5a334b44ef86ad7d64f5a7572adaf6f7..8e55d4347079f1da3be56aa7816dd43945dbf305 100644 (file)
@@ -803,6 +803,19 @@ int imapc_copy(struct mail_save_context *_ctx, struct mail *mail)
                        return -1;
                }
                /* Mail has not been expunged and can be copied. */
+               if (ctx->mbox->capabilities == 0) {
+                       /* The destination mailbox has not yet been selected
+                          so the capabilities are unknown */
+                       if (imapc_client_get_capabilities(ctx->mbox->storage->client->client,
+                                                     &ctx->mbox->capabilities) < 0) {
+                               mail_storage_set_error(mail->box->storage,
+                                                      MAIL_ERROR_UNAVAILABLE,
+                                                      "Failed to determine capabilities for mailbox.");
+                               ctx->finished = TRUE;
+                               index_save_context_free(_ctx);
+                               return -1;
+                       }
+               }
                if ((ctx->mbox->capabilities & IMAPC_CAPABILITY_UIDPLUS) != 0)
                        ret = imapc_copy_bulk(ctx, mail);
                else