if (s.charAt(0) != pre.charAt(0)) break;
s = s.substring(1); pre = pre.substring(1); continue;
}
- break;
}
}
}
parser = new Parser(conn);
conn.setTimeout(30 * 60 * 1000);
println("* OK " + conn.vhost + " " + IMAP.class.getName() + " IMAP4rev1 [RFC3501] v" + version + " server ready");
- for(String tag = null;; newline()) try {
+ for(String tag = null;;) try {
conn.flush();
boolean uid = false;
tag = null; Parser.Token tok = token(); if (tok == null) return; tag = tok.astring();
}
println(tag+" OK "+command+" Completed. " +
(commandKey == LOGIN ? ("[CAPABILITY "+Printer.join(" ", api.capability())+"]") : ""));
- Log.error("[imap]", conn.dumpLog());
- } catch (Server.Bad b) { println(tag==null ? "* BAD Invalid tag":(tag + " Bad " + b.toString()));
- } catch (Server.No n) { println(tag==null?"* BAD Invalid tag":(tag+" No " + n.toString())); }
+ try {
+ newline();
+ } catch (Stream.EOF e) {
+ Log.info(this, "connection closed");
+ 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); }
}
private Parser.Token[] lastfetch = null; // hack
}
}
- public void newline() {
- while (stream.peekc() == '\r' || stream.peekc() == '\n' || stream.peekc() == ' ') {
- for(char c = stream.peekc(); c == ' ';) { stream.getc(); c = stream.peekc(); };
- for(char c = stream.peekc(); c == '\r' || c == '\n';) { stream.getc(); c = stream.peekc(); };
- }
- }
+ public void newline() { stream.readln(); }
public Token token() { return token(true); }
public Token token(boolean freak) {