Skip to content

Commit

Permalink
imap: Add and use client_enabled_mailbox_features()
Browse files Browse the repository at this point in the history
This simplifies the following commits.
  • Loading branch information
sirainen committed Nov 29, 2018
1 parent 579db0c commit b537064
Show file tree
Hide file tree
Showing 7 changed files with 13 additions and 5 deletions.
2 changes: 1 addition & 1 deletion src/imap/cmd-notify.c
Expand Up @@ -437,7 +437,7 @@ imap_notify_box_send_status(struct client_command_context *cmd,

box = mailbox_alloc(info->ns->list, info->vname, MAILBOX_FLAG_READONLY);
mailbox_set_reason(box, "NOTIFY send STATUS");
(void)mailbox_enable(box, ctx->client->enabled_features);
(void)mailbox_enable(box, client_enabled_mailbox_features(ctx->client));

if (imap_status_get(cmd, info->ns, info->vname, &items, &result) < 0) {
if (result.error == MAIL_ERROR_PERM)
Expand Down
2 changes: 1 addition & 1 deletion src/imap/cmd-select.c
Expand Up @@ -290,7 +290,7 @@ select_open(struct imap_select_context *ctx, const char *mailbox, bool readonly)
return -1;
}

ret = mailbox_enable(ctx->box, client->enabled_features);
ret = mailbox_enable(ctx->box, client_enabled_mailbox_features(client));
if (ret < 0 ||
mailbox_sync(ctx->box, MAILBOX_SYNC_FLAG_FULL_READ) < 0) {
client_send_box_error(ctx->cmd, ctx->box);
Expand Down
5 changes: 5 additions & 0 deletions src/imap/imap-client.c
Expand Up @@ -1491,6 +1491,11 @@ bool client_has_enabled(struct client *client, unsigned int feature_idx)
return (client->enabled_features & features) != 0;
}

enum mailbox_feature client_enabled_mailbox_features(struct client *client)
{
return client->enabled_features;
}

struct imap_search_update *
client_search_update_lookup(struct client *client, const char *tag,
unsigned int *idx_r)
Expand Down
3 changes: 3 additions & 0 deletions src/imap/imap-client.h
Expand Up @@ -308,6 +308,9 @@ bool client_handle_search_save_ambiguity(struct client_command_context *cmd);
int client_enable(struct client *client, unsigned int feature_idx);
/* Returns TRUE if the given feature is enabled */
bool client_has_enabled(struct client *client, unsigned int feature_idx);
/* Returns mailbox features that are currently enabled. */
enum mailbox_feature client_enabled_mailbox_features(struct client *client);

/* Send client processing to imap-idle process. If successful, returns TRUE
and destroys the client. */
bool imap_client_hibernate(struct client **client);
Expand Down
2 changes: 1 addition & 1 deletion src/imap/imap-commands-util.c
Expand Up @@ -121,7 +121,7 @@ int client_open_save_dest_box(struct client_command_context *cmd,
mailbox_free(&box);
return -1;
}
if (mailbox_enable(box, cmd->client->enabled_features) < 0) {
if (mailbox_enable(box, client_enabled_mailbox_features(cmd->client)) < 0) {
client_send_box_error(cmd, box);
mailbox_free(&box);
return -1;
Expand Down
2 changes: 1 addition & 1 deletion src/imap/imap-state.c
Expand Up @@ -586,7 +586,7 @@ import_state_mailbox_open(struct client *client,
return -1;
}

ret = mailbox_enable(box, client->enabled_features);
ret = mailbox_enable(box, client_enabled_mailbox_features(client));
if (ret < 0 || mailbox_sync(box, 0) < 0) {
*error_r = t_strdup_printf("Couldn't sync mailbox: %s",
mailbox_get_last_internal_error(box, NULL));
Expand Down
2 changes: 1 addition & 1 deletion src/imap/imap-status.c
Expand Up @@ -75,7 +75,7 @@ int imap_status_get(struct client_command_context *cmd,
/* open the mailbox */
box = mailbox_alloc(ns->list, mailbox, MAILBOX_FLAG_READONLY);
mailbox_set_reason(box, "STATUS");
(void)mailbox_enable(box, client->enabled_features);
(void)mailbox_enable(box, client_enabled_mailbox_features(client));
}

if ((items->status & STATUS_HIGHESTMODSEQ) != 0)
Expand Down

0 comments on commit b537064

Please sign in to comment.