minor refactoring in SMTP
[org.ibex.mail.git] / src / org / ibex / mail / IMAP.java
index 7016661..288a312 100644 (file)
@@ -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('{');