From 5946c35a885d1fe32f5fcf3d27f3d62a71a92367 Mon Sep 17 00:00:00 2001 From: zzz <zzz@mail.i2p> Date: Wed, 4 Feb 2009 14:16:36 +0000 Subject: [PATCH] avoid illegalstateexception --- router/java/src/net/i2p/router/Shitlist.java | 29 ++++++++++++-------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/router/java/src/net/i2p/router/Shitlist.java b/router/java/src/net/i2p/router/Shitlist.java index 4f866c7f7..29d384de9 100644 --- a/router/java/src/net/i2p/router/Shitlist.java +++ b/router/java/src/net/i2p/router/Shitlist.java @@ -61,25 +61,32 @@ public class Shitlist { } private class Cleanup extends JobImpl { + private List<Hash> _toUnshitlist; public Cleanup(RouterContext ctx) { super(ctx); + _toUnshitlist = new ArrayList(4); getTiming().setStartAfter(ctx.clock().now() + SHITLIST_CLEANER_START_DELAY); } public String getName() { return "Cleanup shitlist"; } public void runJob() { + _toUnshitlist.clear(); long now = getContext().clock().now(); - for (Iterator iter = _entries.entrySet().iterator(); iter.hasNext(); ) { - Map.Entry<Hash, Entry> e = (Map.Entry) iter.next(); - if (e.getValue().expireOn <= now) { - iter.remove(); - Hash peer = e.getKey(); - PeerProfile prof = _context.profileOrganizer().getProfile(peer); - if (prof != null) - prof.unshitlist(); - _context.messageHistory().unshitlist(peer); - if (_log.shouldLog(Log.INFO)) - _log.info("Unshitlisting router (expired) " + peer.toBase64()); + try { + for (Iterator iter = _entries.entrySet().iterator(); iter.hasNext(); ) { + Map.Entry<Hash, Entry> e = (Map.Entry) iter.next(); + if (e.getValue().expireOn <= now) { + iter.remove(); + _toUnshitlist.add(e.getKey()); + } } + } catch (IllegalStateException ise) {} // next time... + for (Hash peer : _toUnshitlist) { + PeerProfile prof = _context.profileOrganizer().getProfile(peer); + if (prof != null) + prof.unshitlist(); + _context.messageHistory().unshitlist(peer); + if (_log.shouldLog(Log.INFO)) + _log.info("Unshitlisting router (expired) " + peer.toBase64()); } requeue(30*1000); -- GitLab