Mercurial > dovecot > core-2.2
changeset 19561:bac33082d68a
imapc: Fixed mailbox name escaping for CREATE, DELETE, RENAME, SUBSCRIBE, UNSUBSCRIBE
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 14 Jan 2016 18:52:01 +0200 |
parents | 5e6afd3b67b6 |
children | 388bd0863909 |
files | src/lib-storage/index/imapc/imapc-list.c src/lib-storage/index/imapc/imapc-storage.c |
diffstat | 2 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-list.c Thu Jan 14 18:50:23 2016 +0200 +++ b/src/lib-storage/index/imapc/imapc-list.c Thu Jan 14 18:52:01 2016 +0200 @@ -810,7 +810,8 @@ struct imapc_simple_context ctx; cmd = imapc_list_simple_context_init(&ctx, list); - imapc_command_sendf(cmd, set ? "SUBSCRIBE %s" : "UNSUBSCRIBE %s", name); + imapc_command_sendf(cmd, set ? "SUBSCRIBE %s" : "UNSUBSCRIBE %s", + imapc_list_to_remote(list, name)); imapc_simple_run(&ctx); return ctx.ret; } @@ -839,7 +840,7 @@ } cmd = imapc_list_simple_context_init(&ctx, list); - imapc_command_sendf(cmd, "DELETE %s", name); + imapc_command_sendf(cmd, "DELETE %s", imapc_list_to_remote(list, name)); imapc_simple_run(&ctx); if (fs_list != NULL && ctx.ret == 0) { @@ -886,7 +887,9 @@ } cmd = imapc_list_simple_context_init(&ctx, list); - imapc_command_sendf(cmd, "RENAME %s %s", oldname, newname); + imapc_command_sendf(cmd, "RENAME %s %s", + imapc_list_to_remote(list, oldname), + imapc_list_to_remote(list, newname)); imapc_simple_run(&ctx); if (ctx.ret == 0 && fs_list != NULL && oldlist == newlist) { oldname = imapc_list_get_fs_name(list, oldname);
--- a/src/lib-storage/index/imapc/imapc-storage.c Thu Jan 14 18:50:23 2016 +0200 +++ b/src/lib-storage/index/imapc/imapc-storage.c Thu Jan 14 18:52:01 2016 +0200 @@ -642,11 +642,17 @@ struct imapc_mailbox *mbox = (struct imapc_mailbox *)box; struct imapc_command *cmd; struct imapc_simple_context sctx; - const char *name = box->name; + const char *name = imapc_mailbox_get_remote_name(mbox); - if (directory) { + if (!directory) + ; + else if (strcmp(box->list->name, MAILBOX_LIST_NAME_IMAPC) == 0) { + struct imapc_mailbox_list *imapc_list = + (struct imapc_mailbox_list *)box->list; + name = t_strdup_printf("%s%c", name, imapc_list->root_sep); + } else { name = t_strdup_printf("%s%c", name, - mailbox_list_get_hierarchy_sep(box->list)); + mailbox_list_get_hierarchy_sep(box->list)); } imapc_simple_context_init(&sctx, mbox->storage->client); cmd = imapc_client_cmd(mbox->storage->client->client,