diff --git a/history.txt b/history.txt index 8e20755c8..2b317f138 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,11 @@ +2010-06-13 zzz + * Console: Add some divs for languages to news and readmes + * HTTP Proxy: Pass different User Agent to outproxy + * i2psnark: + - Move config to separate page + - Icon tweaks + * Translation: zh fix + 2010-06-12 welterde * fixed possible race-condition and improved code style in ObjectCounter utility class diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index a411b0099..87e5bffca 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 = 0; + public final static long BUILD = 1; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java index 8c1f6904b..2d4f27292 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java @@ -323,6 +323,7 @@ public class OutboundMessageFragments { List partialACKBitfields = new ArrayList(); peer.fetchPartialACKs(partialACKBitfields); int piggybackedPartialACK = partialACKBitfields.size(); + // getCurrentFullACKs() already makes a copy, do we need to copy again? List remaining = new ArrayList(msgIds); int sparseCount = 0; UDPPacket rv[] = new UDPPacket[fragments]; //sparse diff --git a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java index 53791ffa9..c0d9e22f3 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java @@ -123,6 +123,7 @@ public class PacketBuilder { for (int i = 0; i < ackIdsRemaining.size(); i++) { //while (ackIdsRemaining.size() > 0) { Long ackId = ackIdsRemaining.get(i);//(Long)ackIdsRemaining.remove(0); + // NPE here, how did a null get in the List? DataHelper.toLong(data, off, 4, ackId.longValue()); off += 4; if (msg != null) // logging it diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java index 86b3aad6e..65fb1c014 100644 --- a/router/java/src/net/i2p/router/transport/udp/PeerState.java +++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java @@ -1546,7 +1546,11 @@ public class PeerState { oldPeer._dead = true; List tmp = new ArrayList(); - tmp.addAll(oldPeer._currentACKs); + // AIOOBE from concurrent access + //tmp.addAll(oldPeer._currentACKs); + for (Long l : oldPeer._currentACKs) { + tmp.add(l); + } oldPeer._currentACKs.clear(); if (!_dead) {