deal with messages disappearing between being listed and fetched
This commit is contained in:
parent
17c4748dfa
commit
b570c17766
|
@ -1876,6 +1876,8 @@ imap_submit_load( imap_store_t *ctx, const char *buf, int tuids, struct imap_cmd
|
||||||
|
|
||||||
/******************* imap_fetch_msg *******************/
|
/******************* imap_fetch_msg *******************/
|
||||||
|
|
||||||
|
static void imap_fetch_msg_p2( imap_store_t *ctx, struct imap_cmd *gcmd, int response );
|
||||||
|
|
||||||
static void
|
static void
|
||||||
imap_fetch_msg( store_t *ctx, message_t *msg, msg_data_t *data,
|
imap_fetch_msg( store_t *ctx, message_t *msg, msg_data_t *data,
|
||||||
void (*cb)( int sts, void *aux ), void *aux )
|
void (*cb)( int sts, void *aux ), void *aux )
|
||||||
|
@ -1885,12 +1887,25 @@ imap_fetch_msg( store_t *ctx, message_t *msg, msg_data_t *data,
|
||||||
INIT_IMAP_CMD_X(imap_cmd_fetch_msg, cmd, cb, aux)
|
INIT_IMAP_CMD_X(imap_cmd_fetch_msg, cmd, cb, aux)
|
||||||
cmd->gen.gen.param.uid = msg->uid;
|
cmd->gen.gen.param.uid = msg->uid;
|
||||||
cmd->msg_data = data;
|
cmd->msg_data = data;
|
||||||
imap_exec( (imap_store_t *)ctx, &cmd->gen.gen, imap_done_simple_msg,
|
data->data = 0;
|
||||||
|
imap_exec( (imap_store_t *)ctx, &cmd->gen.gen, imap_fetch_msg_p2,
|
||||||
"UID FETCH %d (%s%sBODY.PEEK[])", msg->uid,
|
"UID FETCH %d (%s%sBODY.PEEK[])", msg->uid,
|
||||||
!(msg->status & M_FLAGS) ? "FLAGS " : "",
|
!(msg->status & M_FLAGS) ? "FLAGS " : "",
|
||||||
(data->date== -1) ? "INTERNALDATE " : "" );
|
(data->date== -1) ? "INTERNALDATE " : "" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
imap_fetch_msg_p2( imap_store_t *ctx, struct imap_cmd *gcmd, int response )
|
||||||
|
{
|
||||||
|
struct imap_cmd_fetch_msg *cmd = (struct imap_cmd_fetch_msg *)gcmd;
|
||||||
|
|
||||||
|
if (response == RESP_OK && !cmd->msg_data->data) {
|
||||||
|
/* The FETCH succeeded, but there is no message with this UID. */
|
||||||
|
response = RESP_NO;
|
||||||
|
}
|
||||||
|
imap_done_simple_msg( ctx, gcmd, response );
|
||||||
|
}
|
||||||
|
|
||||||
/******************* imap_set_flags *******************/
|
/******************* imap_set_flags *******************/
|
||||||
|
|
||||||
static void imap_set_flags_p2( imap_store_t *, struct imap_cmd *, int );
|
static void imap_set_flags_p2( imap_store_t *, struct imap_cmd *, int );
|
||||||
|
|
Loading…
Reference in New Issue
Block a user