From 622e62c20bd8993133a0eba21cfb1bc7e253cf07 Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 20 Jun 2004 12:30:48 +0000 Subject: [PATCH] bugfixes darcs-hash:20040620123048-5007d-d19b07de65f4b70fad7741f0c03312e3444ce3c3.gz --- src/org/ibex/mail/Main.java | 7 +++++-- src/org/ibex/mail/Query.java | 1 + src/org/ibex/mail/protocol/Connection.java | 17 ++++++++++++---- src/org/ibex/mail/protocol/IMAP.java | 26 +++++++++++++++++------- src/org/ibex/mail/protocol/SMTP.java | 4 ++-- src/org/ibex/mail/target/FileBasedMailbox.java | 11 ++++++++-- src/org/ibex/mail/target/Script.java | 4 +++- 7 files changed, 52 insertions(+), 18 deletions(-) diff --git a/src/org/ibex/mail/Main.java b/src/org/ibex/mail/Main.java index 6a94626..8bd9da6 100644 --- a/src/org/ibex/mail/Main.java +++ b/src/org/ibex/mail/Main.java @@ -13,7 +13,9 @@ public class Main { // set up logging String logto = System.getProperty("ibex.mail.root", File.separatorChar + "var" + File.separatorChar + "org.ibex.mail"); logto += File.separatorChar + "log"; - Log.file(logto); + + //Log.file(logto); + Log.color = true; new IMAPThread().start(); new SMTPThread().start(); @@ -21,7 +23,8 @@ public class Main { } private static class BogusAuthenticator implements IMAP.Server.Authenticator { - final Mailbox root = FileBasedMailbox.getFileBasedMailbox(Mailbox.STORAGE_ROOT, true); + final Mailbox root = + FileBasedMailbox.getFileBasedMailbox(Mailbox.STORAGE_ROOT, true).slash("user", true).slash("megacz", true); public Mailbox authenticate(String u, String p) { if (u.equals("megacz") && p.equals("pass")) return root; return null; diff --git a/src/org/ibex/mail/Query.java b/src/org/ibex/mail/Query.java index 0e26897..b127786 100644 --- a/src/org/ibex/mail/Query.java +++ b/src/org/ibex/mail/Query.java @@ -1,6 +1,7 @@ package org.ibex.mail; import java.util.*; import org.ibex.mail.target.*; +import org.ibex.util.*; /** * [immutable] This class encapsulates a query against a mailbox. diff --git a/src/org/ibex/mail/protocol/Connection.java b/src/org/ibex/mail/protocol/Connection.java index fe61ff6..d1cca88 100644 --- a/src/org/ibex/mail/protocol/Connection.java +++ b/src/org/ibex/mail/protocol/Connection.java @@ -50,14 +50,20 @@ public abstract class Connection { InetSocketAddress remote = (InetSocketAddress)conn.getRemoteSocketAddress(); Log.info(this, "connection from "+remote.getHostName()+":"+remote.getPort()+" ("+remote.getAddress()+")"); conversation = new PrintWriter(new OutputStreamWriter(new FileOutputStream(convdir + File.separatorChar + cid + ".txt"))); - boolean ret = handleRequest(); - Log.setThreadAnnotation(""); - conversation.close(); + boolean ret = false; + try { + ret = handleRequest(); + Log.setThreadAnnotation(""); + } finally { + conversation.close(); + } return ret; } protected void println(String s) throws IOException { + if (inbound.length() > 0) { conversation.println("C: " + inbound.toString()); inbound.setLength(0); } conversation.println("S: " + s); + conversation.flush(); pw.print(s); pw.print("\r\n"); pw.flush(); @@ -66,13 +72,16 @@ public abstract class Connection { protected String readln() throws IOException { String line = lr.readLine(); conversation.println("C: " + line); + conversation.flush(); return line; } public char getc() throws IOException { int ret = r.read(); if (ret == -1) throw new EOFException(); - if (ret == '\n') { if (inbound.length() > 0) { conversation.println("C: " + inbound.toString()); inbound.setLength(0); } } + if (ret == '\n') { + if (inbound.length() > 0) { conversation.println("C: " + inbound.toString()); inbound.setLength(0); } } else if (ret != '\r') inbound.append((char)ret); + conversation.flush(); return (char)ret; } public char peekc() throws IOException { diff --git a/src/org/ibex/mail/protocol/IMAP.java b/src/org/ibex/mail/protocol/IMAP.java index 7c131d2..f6670f6 100644 --- a/src/org/ibex/mail/protocol/IMAP.java +++ b/src/org/ibex/mail/protocol/IMAP.java @@ -259,7 +259,7 @@ public class IMAP { String[] headers = null; int start = -1, end = -1; StringBuffer r = new StringBuffer(); - if (e) { r.append(num); r.append(" FETCH ("); } + if (e) { r.append(uid ? muid : num); r.append(" FETCH ("); } int initlen = r.length(); if (uid) { boolean good = false; @@ -302,7 +302,8 @@ public class IMAP { } else { if (s.equalsIgnoreCase("BODY.PEEK")) spec |= PEEK; else if (e) api.addFlags(Query.num(new int[] { num, num }), Mailbox.Flag.SEEN, false, false); - if (i= names.length) return null; try { File file = new File(path + File.separatorChar + names[cur]); return new Message(null, null, new LineReader(new InputStreamReader(new FileInputStream(file)))); diff --git a/src/org/ibex/mail/target/Script.java b/src/org/ibex/mail/target/Script.java index 5564ba6..c742cc4 100644 --- a/src/org/ibex/mail/target/Script.java +++ b/src/org/ibex/mail/target/Script.java @@ -95,7 +95,9 @@ public class Script extends Target { if (name.equals("mail")) { return getSub("mail"); } if (name.equals("mail.my")) { return getSub("mail.my"); } if (name.equals("mail.my.prefs")) { return prefs; } - //if (name.equals("mail.my.mailbox")) { return Mailbox.getForUser("megacz"); } + if (name.equals("mail.my.mailbox")) { + return FileBasedMailbox.getFileBasedMailbox(Mailbox.STORAGE_ROOT, true).slash("user", true).slash("megacz", true).slash("newmail", true); + } return super.get(name); } -- 1.7.10.4