From: adam Date: Sat, 4 Feb 2006 10:10:11 +0000 (+0000) Subject: bugfix for NPE on newsgroup not found X-Git-Url: http://git.megacz.com/?p=org.ibex.mail.git;a=commitdiff_plain;h=389cc2950dd5988112aaa96f38929324a613f09f bugfix for NPE on newsgroup not found darcs-hash:20060204101011-5007d-393afffd1bbb42a51ddef8a06a28bf81b2c715a7.gz --- diff --git a/src/org/ibex/mail/protocol/NNTP.java b/src/org/ibex/mail/protocol/NNTP.java index dde6a85..bbe4ca7 100644 --- a/src/org/ibex/mail/protocol/NNTP.java +++ b/src/org/ibex/mail/protocol/NNTP.java @@ -60,7 +60,13 @@ public class NNTP { private Mailbox current; private int ptr = 0; public MailboxWrapper(Mailbox root) { this.root = root; } - public Group group(String s) { ptr = 0; setgroup(s); return getgroup(s); } + public Group group(String s) { + ptr = 0; + Group g = getgroup(s); + if (g==null) return null; + setgroup(s); + return g; + } public boolean ihave(String messageid) { /* FEATURE */ return false; } public boolean post(Message m) { /* FEATURE */ return false; } @@ -93,14 +99,16 @@ public class NNTP { } private void setgroup(String s) { - current = root; + Mailbox ncurrent = root; for(StringTokenizer st = new StringTokenizer(s, "."); - st.hasMoreTokens(); - current = current.slash(st.nextToken(), false)); + ncurrent != null && st.hasMoreTokens(); + ncurrent = ncurrent.slash(st.nextToken(), false)); + if (ncurrent!=null) current=ncurrent; } private Group getgroup(String s) { Mailbox box = root; - for(StringTokenizer st = new StringTokenizer(s, "."); st.hasMoreTokens(); box = box.slash(st.nextToken(), false)); + for(StringTokenizer st = new StringTokenizer(s, "."); box!=null && st.hasMoreTokens(); box = box.slash(st.nextToken(), false)); + if (box==null) return null; return new Group(s, true, 1, box.count(Query.all()), box.count(Query.all())); } @@ -209,7 +217,8 @@ public class NNTP { } else if (command.equals("QUIT")) { println("205 Bye."); conn.close(); return; } else if (command.equals("GROUP")) { Group g = api.group(st.nextToken().toLowerCase()); - println("211 " + g.count + " " + g.first + " " + g.last + " " + g.name); + if (g==null) println("411 no such group"); + else println("211 " + g.count + " " + g.first + " " + g.last + " " + g.name); } else if (command.equals("NEWGROUPS") || command.equals("NEWNEWS")) { // FIXME: * and ! unsupported // NEWNEWS is often not supported