Author: alexlehm Date: 2008-01-14 16:14:16 +0000 (Mon, 14 Jan 2008) New Revision: 17037
Modified: trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java Log: 1988: Patch for Freemail/IMAPHandler (https://bugs.freenetproject.org/view.php?id=1988) handle append commands that do not include flags (e.g. Kmail) (reported by Martin Nyhus) Modified: trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java =================================================================== --- trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java 2008-01-13 00:03:11 UTC (rev 17036) +++ trunk/apps/Freemail/src/freemail/imap/IMAPHandler.java 2008-01-14 16:14:16 UTC (rev 17037) @@ -1075,18 +1075,27 @@ } private void handle_append(IMAPMessage msg) { - if (msg.args == null || msg.args.length < 3) { - this.reply(msg, "NO Not enough arguments"); + if (msg.args == null || msg.args.length < 2) { + this.reply(msg, "BAD Not enough arguments"); return; } + //args[0] is always the mailbox String mbname = trimQuotes(msg.args[0]); - String sflags = msg.args[1]; - if (sflags.startsWith("(")) sflags = sflags.substring(1); - if (sflags.endsWith(")")) sflags = sflags.substring(0, sflags.length() - 1); - String sdatalen = msg.args[2]; - if (sdatalen.startsWith("{")) sdatalen = sdatalen.substring(1); - if (sdatalen.endsWith("}")) sdatalen = sdatalen.substring(0, sdatalen.length() - 1); + + String sdatalen = ""; + String sflags = ""; + + for (int i = 1; i < msg.args.length; i++) { + if (msg.args[i].startsWith("(")) { + //List of flags + sflags = msg.args[i].substring(1, msg.args[i].length() - 1); + } else if (msg.args[i].startsWith("{")) { + //Data length + sdatalen = msg.args[i].substring(1, msg.args[i].length() -1); + } + } + int datalen; try { datalen = Integer.parseInt(sdatalen);
