X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fmail%2FIMAP.java;h=288a31219f7f103c9f796d285cb07b27dc9ba226;hb=51e77110d64e2b615bea3c93a38ca067c11f6c18;hp=7016661a7e722ebf89a967021324ab9e68ba7f61;hpb=3da87f63b818fea4dced53ed18c357cbe7ffe887;p=org.ibex.mail.git diff --git a/src/org/ibex/mail/IMAP.java b/src/org/ibex/mail/IMAP.java index 7016661..288a312 100644 --- a/src/org/ibex/mail/IMAP.java +++ b/src/org/ibex/mail/IMAP.java @@ -358,7 +358,8 @@ public class IMAP { Date arrival = new Date(); Parser.Token t = token(); if (t.type == t.LIST) { flags = t.flags(); t = token(); } - if (t.type != t.QUOTED) { arrival = t.datetime(); t = token(); } + Parser.Token t2 = token(false); + if (t2 != null) { arrival = t.datetime(); t = t2; } api.append(m, flags, arrival, t.q()); break; } case STORE: { @@ -385,7 +386,10 @@ public class IMAP { return; } } catch (Server.Bad b) { println(tag==null ? "* BAD Invalid tag":(tag + " Bad " + b.toString())); Log.warn(this,b); - } catch (Server.No n) { println(tag==null?"* BAD Invalid tag":(tag+" No " + n.toString())); Log.warn(this,n); } + } catch (Server.No n) { println(tag==null?"* BAD Invalid tag":(tag+" No " + n.toString())); Log.warn(this,n); + } finally { + Log.warn(this, conn.dumpLog()+"\n"); + } } private Parser.Token[] lastfetch = null; // hack @@ -702,7 +706,7 @@ public class IMAP { } public Date datetime() { if (type != QUOTED) bad("Expected quoted datetime"); - try { return new SimpleDateFormat("dd-MM-yyyy hh:mm:ss zzzz").parse(s.trim()); + try { return new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss zzzz").parse(s.trim()); } catch (ParseException p) { throw new Server.Bad("invalid datetime format " + s + " : " + p); } } public String atom() { @@ -827,6 +831,12 @@ public class IMAP { ")"; } + // FIXME: ugly + public static String qq(Stream stream) { + StringBuffer sb = new StringBuffer(); + stream.transcribe(sb); + return sb.toString(); + } public static String qq(String s) { StringBuffer ret = new StringBuffer(); ret.append('{');