From 446f841a1ebae8a95441e50e6857410e066afef7 Mon Sep 17 00:00:00 2001 From: mguessan Date: Tue, 29 Apr 2014 21:18:46 +0000 Subject: [PATCH] IMAP: fix 564, Moving / copying messages in public mailbox git-svn-id: http://svn.code.sf.net/p/davmail/code/trunk@2287 3d1905a2-6b24-0410-a738-b14d5a86fcbd --- src/java/davmail/imap/ImapConnection.java | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/java/davmail/imap/ImapConnection.java b/src/java/davmail/imap/ImapConnection.java index 0d65e304..743d80c8 100644 --- a/src/java/davmail/imap/ImapConnection.java +++ b/src/java/davmail/imap/ImapConnection.java @@ -156,12 +156,7 @@ public class ImapConnection extends AbstractConnection { session = ExchangeSessionFactory.getInstance(session, userName, password); if ("lsub".equalsIgnoreCase(command) || "list".equalsIgnoreCase(command)) { if (tokens.hasMoreTokens()) { - String folderContext; - if (baseMailboxPath == null) { - folderContext = BASE64MailboxDecoder.decode(tokens.nextToken()); - } else { - folderContext = baseMailboxPath + BASE64MailboxDecoder.decode(tokens.nextToken()); - } + String folderContext = buildFolderContext(tokens.nextToken()); if (tokens.hasMoreTokens()) { String folderQuery = folderContext + BASE64MailboxDecoder.decode(tokens.nextToken()); if (folderQuery.endsWith("%/%") && !"/%/%".equals(folderQuery)) { @@ -344,7 +339,7 @@ public class ImapConnection extends AbstractConnection { } else if ("copy".equalsIgnoreCase(subcommand) || "move".equalsIgnoreCase(subcommand)) { try { UIDRangeIterator uidRangeIterator = new UIDRangeIterator(currentFolder.messages, tokens.nextToken()); - String targetName = BASE64MailboxDecoder.decode(tokens.nextToken()); + String targetName = buildFolderContext(tokens.nextToken()); if (!uidRangeIterator.hasNext()) { sendClient(commandId + " NO " + "No message found"); } else { @@ -708,6 +703,14 @@ public class ImapConnection extends AbstractConnection { } } + protected String buildFolderContext(String folderToken) { + if (baseMailboxPath == null) { + return BASE64MailboxDecoder.decode(folderToken); + } else { + return baseMailboxPath + BASE64MailboxDecoder.decode(folderToken); + } + } + /** * Send expunge untagged response for removed IMAP message uids. * @@ -1947,4 +1950,4 @@ public class ImapConnection extends AbstractConnection { } } -} \ No newline at end of file +}