be more careful about closing ResultSets in Graylist
[org.ibex.mail.git] / src / org / ibex / mail / FileBasedMailbox.java
index 2ba6549..2adf9cd 100644 (file)
@@ -46,12 +46,10 @@ public class FileBasedMailbox extends Mailbox.Default implements MailTree {
             MailTree ret = instances.get(path);
             if (ret == null) {
                 Log.error("n", "no match for " + path + " in " + instances.hashCode());
-                if (new File(path+".sqlite").exists())
-                    ret = new SqliteMailbox(path+".sqlite");
-                else {
-                    if (!create && !(new File(path).exists())) return null;
-                    ret = new FileBasedMailbox(new File(path));
-                }
+                if (new File(path+".sqlite").exists()) ret = new SqliteMailbox(path+".sqlite");
+                else if (new File(path).exists()) ret = new FileBasedMailbox(new File(path));
+                else if (create) ret = new SqliteMailbox(path+".sqlite");
+                else return null;
                 instances.put(path, (MailTree)ret);
                 Log.error("n", "filling " + path + " with " + instances.get(path));
             }
@@ -198,6 +196,7 @@ public class FileBasedMailbox extends Mailbox.Default implements MailTree {
             if ((flags & Mailbox.Flag.SEEN) == 0)  f.setLastModified(MAGIC_DATE);
             else if (f.lastModified()==MAGIC_DATE) f.setLastModified(System.currentTimeMillis());
             // FIXME: other flags?
+            // FIXME: definitely need DELETED flag in order to do message moves!
         }
         public Headers head() { return done() ? null : new Headers(new Fountain.File(file())); }
         public Message cur() { return Message.newMessage(new Fountain.File(file())); }