return desc && description != null && description.length() > 0 ? (description+" <" + toString() + ">") : toString(); }
public static class Malformed extends Message.Malformed { public Malformed(String s) { super(s); } }
+ /** in case of flaky DNS */
+ private static HashSet<String> local = new HashSet<String>();
public boolean isLocal() {
- InetAddress[] mx = SMTP.getMailExchangerIPs(host);
- for(int i=0; i<mx.length; i++) {
- try { if (NetworkInterface.getByInetAddress(mx[i]) != null) { return true; } }
- catch (Exception e) { /* DELIBERATE */ }
+ synchronized(local) {
+ if (local.contains(host)) return true;
+ InetAddress[] mx = SMTP.getMailExchangerIPs(host);
+ for(int i=0; i<mx.length; i++) {
+ try { if (NetworkInterface.getByInetAddress(mx[i]) != null) {
+ local.add(host);
+ return true;
+ } } catch (Exception e) { /* DELIBERATE */ }
+ }
}
- Log.warn(this, "returning false");
+ Log.warn(this, "returning false for " + this + ".isLocal()");
return false;
}