dovecot-2.2: imapc: Fixed handling escape-char
dovecot at dovecot.org
dovecot at dovecot.org
Wed Aug 26 15:02:09 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/f363a7665a14
changeset: 19018:f363a7665a14
user: Timo Sirainen <tss at iki.fi>
date: Wed Aug 26 17:00:55 2015 +0200
description:
imapc: Fixed handling escape-char
The current code should now handle all kinds of mailbox names correctly, including:
~/foo
%7e/bar
diffstat:
src/lib-storage/index/imapc/imapc-list.c | 1 +
src/lib-storage/index/imapc/imapc-save.c | 4 +++-
src/lib-storage/index/imapc/imapc-storage.c | 22 ++++++++++++++--------
3 files changed, 18 insertions(+), 9 deletions(-)
diffs (71 lines):
diff -r 0147397d9504 -r f363a7665a14 src/lib-storage/index/imapc/imapc-list.c
--- a/src/lib-storage/index/imapc/imapc-list.c Wed Aug 26 16:59:47 2015 +0200
+++ b/src/lib-storage/index/imapc/imapc-list.c Wed Aug 26 17:00:55 2015 +0200
@@ -176,6 +176,7 @@
flags++;
}
+ name = mailbox_list_escape_name(&list->list, name);
T_BEGIN {
const char *vname =
mailbox_list_get_vname(&list->list, name);
diff -r 0147397d9504 -r f363a7665a14 src/lib-storage/index/imapc/imapc-save.c
--- a/src/lib-storage/index/imapc/imapc-save.c Wed Aug 26 16:59:47 2015 +0200
+++ b/src/lib-storage/index/imapc/imapc-save.c Wed Aug 26 17:00:55 2015 +0200
@@ -10,6 +10,7 @@
#include "index-mail.h"
#include "mail-copy.h"
#include "imapc-client.h"
+#include "mailbox-list-private.h"
#include "imapc-storage.h"
#include "imapc-sync.h"
#include "imapc-mail.h"
@@ -245,7 +246,8 @@
cmd = imapc_client_cmd(ctx->mbox->storage->client->client,
imapc_save_callback, &sctx);
imapc_command_sendf(cmd, "APPEND %s%1s%1s %p",
- ctx->mbox->box.name, flags, internaldate, input);
+ mailbox_list_unescape_name(ctx->mbox->box.list, ctx->mbox->box.name),
+ flags, internaldate, input);
i_stream_unref(&input);
while (sctx.ret == -2)
imapc_mailbox_run(ctx->mbox);
diff -r 0147397d9504 -r f363a7665a14 src/lib-storage/index/imapc/imapc-storage.c
--- a/src/lib-storage/index/imapc/imapc-storage.c Wed Aug 26 16:59:47 2015 +0200
+++ b/src/lib-storage/index/imapc/imapc-storage.c Wed Aug 26 17:00:55 2015 +0200
@@ -471,10 +471,13 @@
cmd = imapc_client_mailbox_cmd(mbox->client_box,
imapc_mailbox_reopen_callback, mbox);
imapc_command_set_flags(cmd, IMAPC_COMMAND_FLAG_SELECT);
- if (imapc_mailbox_want_examine(mbox))
- imapc_command_sendf(cmd, "EXAMINE %s", mbox->box.name);
- else
- imapc_command_sendf(cmd, "SELECT %s", mbox->box.name);
+ if (imapc_mailbox_want_examine(mbox)) {
+ imapc_command_sendf(cmd, "EXAMINE %s",
+ mailbox_list_unescape_name(mbox->box.list, mbox->box.name));
+ } else {
+ imapc_command_sendf(cmd, "SELECT %s",
+ mailbox_list_unescape_name(mbox->box.list, mbox->box.name));
+ }
mbox->storage->reopen_count++;
if (mbox->syncing)
@@ -546,10 +549,13 @@
cmd = imapc_client_mailbox_cmd(mbox->client_box,
imapc_mailbox_open_callback, &ctx);
imapc_command_set_flags(cmd, IMAPC_COMMAND_FLAG_SELECT);
- if (imapc_mailbox_want_examine(mbox))
- imapc_command_sendf(cmd, "EXAMINE %s", mbox->box.name);
- else
- imapc_command_sendf(cmd, "SELECT %s", mbox->box.name);
+ if (imapc_mailbox_want_examine(mbox)) {
+ imapc_command_sendf(cmd, "EXAMINE %s",
+ mailbox_list_unescape_name(mbox->box.list, mbox->box.name));
+ } else {
+ imapc_command_sendf(cmd, "SELECT %s",
+ mailbox_list_unescape_name(mbox->box.list, mbox->box.name));
+ }
while (ctx.ret == -2)
imapc_mailbox_run(mbox);
More information about the dovecot-cvs
mailing list