While non-standard, the IMAP server we are replacing returns non-system
flags as strings instead of atoms.

Prior to this change, imapc would abort processing on the first message
with a string flag.
---
 src/lib-storage/index/imapc/imapc-mailbox.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/lib-storage/index/imapc/imapc-mailbox.c 
b/src/lib-storage/index/imapc/imapc-mailbox.c
index c3e12d1..91333dc 100644
--- a/src/lib-storage/index/imapc/imapc-mailbox.c
+++ b/src/lib-storage/index/imapc/imapc-mailbox.c
@@ -310,7 +310,8 @@ static void imapc_untagged_fetch(const struct 
imapc_untagged_reply *reply,
                        t_array_init(&keywords, 8);
                        seen_flags = TRUE;
                        for (j = 0; flags_list[j].type != IMAP_ARG_EOL; j++) {
-                               if (!imap_arg_get_atom(&flags_list[j], &atom))
+                               if (!imap_arg_get_atom(&flags_list[j], &atom) &&
+                                   !imap_arg_get_string(&flags_list[j], &atom))
                                        return;
                                if (atom[0] == '\\')
                                        flags |= imap_parse_system_flag(atom);
-- 
2.1.4

Reply via email to