|
@@ -432,6 +432,23 @@ imap_refcounted_done( struct imap_cmd_refcounted_state *sts )
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static void
|
|
|
+imap_refcounted_done_box( imap_store_t *ctx ATTR_UNUSED, struct imap_cmd *cmd, int response )
|
|
|
+{
|
|
|
+ struct imap_cmd_refcounted_state *sts = ((struct imap_cmd_refcounted *)cmd)->state;
|
|
|
+
|
|
|
+ switch (response) {
|
|
|
+ case RESP_CANCEL:
|
|
|
+ sts->ret_val = DRV_CANCELED;
|
|
|
+ break;
|
|
|
+ case RESP_NO:
|
|
|
+ if (sts->ret_val == DRV_OK) /* Don't override cancelation. */
|
|
|
+ sts->ret_val = DRV_BOX_BAD;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ imap_refcounted_done( sts );
|
|
|
+}
|
|
|
+
|
|
|
static int
|
|
|
is_atom( list_t *list )
|
|
|
{
|
|
@@ -1452,7 +1469,6 @@ imap_select( store_t *gctx, int create,
|
|
|
/******************* imap_load *******************/
|
|
|
|
|
|
static int imap_submit_load( imap_store_t *, const char *, int, struct imap_cmd_refcounted_state * );
|
|
|
-static void imap_load_p2( imap_store_t *, struct imap_cmd *, int );
|
|
|
|
|
|
static void
|
|
|
imap_load( store_t *gctx, int minuid, int maxuid, int newuid, int *excs, int nexcs,
|
|
@@ -1505,30 +1521,13 @@ imap_load( store_t *gctx, int minuid, int maxuid, int newuid, int *excs, int nex
|
|
|
static int
|
|
|
imap_submit_load( imap_store_t *ctx, const char *buf, int tuids, struct imap_cmd_refcounted_state *sts )
|
|
|
{
|
|
|
- return imap_exec( ctx, imap_refcounted_new_cmd( sts ), imap_load_p2,
|
|
|
+ return imap_exec( ctx, imap_refcounted_new_cmd( sts ), imap_refcounted_done_box,
|
|
|
"UID FETCH %s (UID%s%s%s)", buf,
|
|
|
(ctx->gen.opts & OPEN_FLAGS) ? " FLAGS" : "",
|
|
|
(ctx->gen.opts & OPEN_SIZE) ? " RFC822.SIZE" : "",
|
|
|
tuids ? " BODY.PEEK[HEADER.FIELDS (X-TUID)]" : "");
|
|
|
}
|
|
|
|
|
|
-static void
|
|
|
-imap_load_p2( imap_store_t *ctx ATTR_UNUSED, struct imap_cmd *cmd, int response )
|
|
|
-{
|
|
|
- struct imap_cmd_refcounted_state *sts = ((struct imap_cmd_refcounted *)cmd)->state;
|
|
|
-
|
|
|
- switch (response) {
|
|
|
- case RESP_CANCEL:
|
|
|
- sts->ret_val = DRV_CANCELED;
|
|
|
- break;
|
|
|
- case RESP_NO:
|
|
|
- if (sts->ret_val == DRV_OK) /* Don't override cancelation. */
|
|
|
- sts->ret_val = DRV_BOX_BAD;
|
|
|
- break;
|
|
|
- }
|
|
|
- imap_refcounted_done( sts );
|
|
|
-}
|
|
|
-
|
|
|
/******************* imap_fetch_msg *******************/
|
|
|
|
|
|
static void
|