From 974c663471c15721082d9bdc50d90dd6843467b0 Mon Sep 17 00:00:00 2001
From: Jiri Hruska <jirka@fud.cz>
Date: Thu, 28 Feb 2013 19:16:33 +0100
Subject: [PATCH] imap: Introduced FETCH_FINAL state for processing final fetch
 responses

A typical FETCH response can be broken down into four parts:

  1) "* <uid> FETCH (<what> {<size>}\r\n", using continuation syntax
  2) <size> bytes of the actual message
  3) ")\r\n", finishing the untagged response
  4) "<tag> OK ...", finishing the command

Part 1 is read in imap_fetch_resp(), part 2 is consumed in the PERFORM
phase by the transfer subsystem, parts 3 and 4 are currently ignored.
---
 lib/imap.c | 1 +
 lib/imap.h | 1 +
 2 files changed, 2 insertions(+)

diff --git a/lib/imap.c b/lib/imap.c
index 8c1ea01d6..8f6aad7c6 100644
--- a/lib/imap.c
+++ b/lib/imap.c
@@ -467,6 +467,7 @@ static void state(struct connectdata *conn, imapstate newstate)
     "LOGIN",
     "SELECT",
     "FETCH",
+    "FETCH_FINAL",
     "LOGOUT",
     /* LAST */
   };
diff --git a/lib/imap.h b/lib/imap.h
index 428bc23ae..af12130bd 100644
--- a/lib/imap.h
+++ b/lib/imap.h
@@ -47,6 +47,7 @@ typedef enum {
   IMAP_LOGIN,
   IMAP_SELECT,
   IMAP_FETCH,
+  IMAP_FETCH_FINAL,
   IMAP_LOGOUT,
   IMAP_LAST          /* never used */
 } imapstate;
-- 
2.40.0