From 81240a524028c80a7575e13e65173fce9a835c8a Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 29 Aug 2011 00:50:25 +0000 Subject: [PATCH] revert change causing ConcurrentModificationExceptions --- .../src/net/i2p/router/RouterVersion.java | 2 +- .../transport/OutboundMessageRegistry.java | 26 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 282c18b422..0725033fa6 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 2; + public final static long BUILD = 3; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java b/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java index 1ca4cc955c..55c0082eba 100644 --- a/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java +++ b/router/java/src/net/i2p/router/transport/OutboundMessageRegistry.java @@ -93,10 +93,11 @@ public class OutboundMessageRegistry { List removedSelectors = null; synchronized (_selectors) { - for (Iterator iter = _selectors.iterator(); iter.hasNext(); ) { - MessageSelector sel = iter.next(); - if (sel == null) - continue; + // ConcurrentModificationException - why? + //for (Iterator iter = _selectors.iterator(); iter.hasNext(); ) { + // MessageSelector sel = iter.next(); + for (int i = 0; i < _selectors.size(); i++) { + MessageSelector sel = (MessageSelector)_selectors.get(i); boolean isMatch = sel.isMatch(message); if (isMatch) { if (matchedSelectors == null) matchedSelectors = new ArrayList(1); @@ -104,7 +105,9 @@ public class OutboundMessageRegistry { if (!sel.continueMatching()) { if (removedSelectors == null) removedSelectors = new ArrayList(1); removedSelectors.add(sel); - iter.remove(); + //iter.remove(); + _selectors.remove(i); + i--; } } } @@ -258,14 +261,19 @@ public class OutboundMessageRegistry { public void timeReached() { long now = _context.clock().now(); - List removing = new ArrayList(1); + List removing = new ArrayList(8); synchronized (_selectors) { - for (Iterator iter = _selectors.iterator(); iter.hasNext(); ) { - MessageSelector sel = iter.next(); + // CME? + //for (Iterator iter = _selectors.iterator(); iter.hasNext(); ) { + // MessageSelector sel = iter.next(); + for (int i = 0; i < _selectors.size(); i++) { + MessageSelector sel = (MessageSelector)_selectors.get(i); long expiration = sel.getExpiration(); if (expiration <= now) { removing.add(sel); - iter.remove(); + //iter.remove(); + _selectors.remove(i); + i--; } else if (expiration < _nextExpire || _nextExpire < now) { _nextExpire = expiration; }