projects
/
org.ibex.mail.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bugfix for NPE on newsgroup not found
[org.ibex.mail.git]
/
src
/
org
/
ibex
/
mail
/
protocol
/
NNTP.java
diff --git
a/src/org/ibex/mail/protocol/NNTP.java
b/src/org/ibex/mail/protocol/NNTP.java
index
dde6a85
..
bbe4ca7
100644
(file)
--- 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; }
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; }
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) {
}
private void setgroup(String s) {
- current = root;
+ Mailbox ncurrent = root;
for(StringTokenizer st = new StringTokenizer(s, ".");
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;
}
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()));
}
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());
} 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
} else if (command.equals("NEWGROUPS") || command.equals("NEWNEWS")) {
// FIXME: * and ! unsupported
// NEWNEWS is often not supported