]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Support SORT=DISPLAY extension
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 2 Dec 2025 22:33:12 +0000 (00:33 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 3 Dec 2025 21:13:15 +0000 (23:13 +0200)
src/lib-imap-client/imapc-settings.c
src/lib-imap-client/imapc-settings.h
src/lib-storage/index/imapc/imapc-search.c

index 884aeece4ef2f1809cd59d15421f5373bc2b7a56..ab6b7cb3ba2a2607acc675ad9f2f3e6d50dccf04 100644 (file)
@@ -113,6 +113,7 @@ const struct imapc_capability_name imapc_capability_names[] = {
        { "METADATA", IMAPC_CAPABILITY_METADATA },
        { "SORT", IMAPC_CAPABILITY_SORT },
        { "ESORT", IMAPC_CAPABILITY_ESORT },
+       { "SORT=DISPLAY", IMAPC_CAPABILITY_SORT_DISPLAY },
 
        { "IMAP4REV1", IMAPC_CAPABILITY_IMAP4REV1 },
        { "IMAP4REV2", IMAPC_CAPABILITY_IMAP4REV2 },
index 3ba6b85781ad55dee8abd6158866137bdc145a53..85345d52202ac86ce36415872ca709a1bf8d10f9 100644 (file)
@@ -47,6 +47,7 @@ enum imapc_capability {
        IMAPC_CAPABILITY_METADATA       = 0x10000,
        IMAPC_CAPABILITY_SORT           = 0x20000,
        IMAPC_CAPABILITY_ESORT          = 0x40000,
+       IMAPC_CAPABILITY_SORT_DISPLAY   = 0x100000,
 
        IMAPC_CAPABILITY_IMAP4REV2      = 0x20000000,
        IMAPC_CAPABILITY_IMAP4REV1      = 0x40000000,
index 3f0192afdc0fd5f5a531d12a5a2ccb6987104368..977ee586f76b1fbee3b496e9f1fb76ce22c0ce24 100644 (file)
@@ -65,7 +65,15 @@ imapc_build_sort_query(struct imapc_mailbox *mbox,
                        str_append(str, "TO");
                        break;
                case MAIL_SORT_DISPLAYFROM:
+                       if ((mbox->capabilities & IMAPC_CAPABILITY_SORT_DISPLAY) == 0)
+                               return FALSE;
+                       str_append(str, "DISPLAYFROM");
+                       break;
                case MAIL_SORT_DISPLAYTO:
+                       if ((mbox->capabilities & IMAPC_CAPABILITY_SORT_DISPLAY) == 0)
+                               return FALSE;
+                       str_append(str, "DISPLAYTO");
+                       break;
                case MAIL_SORT_RELEVANCY:
                case MAIL_SORT_POP3_ORDER:
                        return FALSE;