Commit 7b471fb3 authored by Jiri Hruska's avatar Jiri Hruska Committed by Steve Holme
Browse files

imap: Enabled APPEND support in imap_perform()

Added logic in imap_perform() to perform an APPEND rather than SELECT
and FETCH if an upload has been specified.
parent f8c8c76d
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1721,8 +1721,8 @@ static CURLcode imap_done(struct connectdata *conn, CURLcode status,
 *
 * imap_perform()
 *
 * This is the actual DO function for IMAP. Fetch a message according to the
 * options previously setup.
 * This is the actual DO function for IMAP. Fetch or append a message
 * according to the options previously setup.
 */
static CURLcode imap_perform(struct connectdata *conn, bool *connected,
                             bool *dophase_done)
@@ -1743,7 +1743,11 @@ static CURLcode imap_perform(struct connectdata *conn, bool *connected,
  *dophase_done = FALSE; /* not done yet */

  /* Start the first command in the DO phase */
  if(imap->mailbox && imapc->mailbox &&
  if(conn->data->set.upload)
    /* APPEND can be executed directly */
    result = imap_append(conn);
    /* FETCH needs a selected mailbox */
  else if(imap->mailbox && imapc->mailbox &&
          !strcmp(imap->mailbox, imapc->mailbox) &&
          (!imap->uidvalidity || !imapc->mailbox_uidvalidity ||
           !strcmp(imap->uidvalidity, imapc->mailbox_uidvalidity))) {