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 4f2c9a2d8..10e798999 100644 --- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java +++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; @@ -386,7 +387,7 @@ class OutboundMessageFragments { int piggybackedPartialACK = partialACKBitfields.size(); // getCurrentFullACKs() already makes a copy, do we need to copy again? // YES because buildPacket() now removes them (maybe) - List remaining = new ArrayList(msgIds); + Set remaining = new HashSet(msgIds); // build the list of fragments to send List toSend = new ArrayList(8); 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 efa408187..11def9b7f 100644 --- a/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java +++ b/router/java/src/net/i2p/router/transport/udp/PacketBuilder.java @@ -5,6 +5,7 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; @@ -290,7 +291,7 @@ class PacketBuilder { * @return null on error */ public UDPPacket buildPacket(OutboundMessageState state, int fragment, PeerState peer, - List ackIdsRemaining, int newAckCount, + Collection ackIdsRemaining, int newAckCount, List partialACKsRemaining) { List frags = Collections.singletonList(new Fragment(state, fragment)); return buildPacket(frags, peer, ackIdsRemaining, newAckCount, partialACKsRemaining); @@ -302,7 +303,7 @@ class PacketBuilder { * @since 0.9.16 */ public UDPPacket buildPacket(List fragments, PeerState peer, - List ackIdsRemaining, int newAckCount, + Collection ackIdsRemaining, int newAckCount, List partialACKsRemaining) { StringBuilder msg = null; if (_log.shouldLog(Log.INFO)) {