]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imap: Do not use deprecated IMAP4rev1 search arguments if IMAP4rev2 is enabled
authorMarkus Valentin <markus.valentin@open-xchange.com>
Mon, 7 Apr 2025 12:18:54 +0000 (14:18 +0200)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Mon, 12 May 2025 10:40:58 +0000 (10:40 +0000)
src/imap/imap-search-args.c

index df73a70c84c076f537e3413635d869907a1bf97c..a66b8f74be660744ff43e1da22f670f0b54c0c2e 100644 (file)
@@ -49,6 +49,7 @@ int imap_search_args_build(struct client_command_context *cmd,
 {
        struct mail_search_parser *parser;
        struct mail_search_args *sargs;
+       struct mail_search_register *reg;
        const char *client_error;
        int ret;
 
@@ -58,8 +59,15 @@ int imap_search_args_build(struct client_command_context *cmd,
        }
 
        parser = mail_search_parser_init_imap(args);
-       ret = mail_search_build(mail_search_register_get_imap4rev1(),
-                               parser, &charset, &sargs, &client_error);
+       /* If IMAP4REV2 is enabled do not use IMAPREV1 search
+          registers (NEW, RECENT). */
+       if ((client_enabled_mailbox_features(cmd->client) &
+           MAILBOX_FEATURE_IMAP4REV2) != 0)
+               reg = mail_search_register_get_imap4rev2();
+       else
+               reg = mail_search_register_get_imap4rev1();
+
+       ret = mail_search_build(reg, parser, &charset, &sargs, &client_error);
        mail_search_parser_deinit(&parser);
        if (ret < 0) {
                if (charset == NULL) {