From 1460bec8cf61661c443727a2a86b7f9ebac56894 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 6 Jul 2018 13:27:38 +0000 Subject: [PATCH] SSU: Change remaining acks from List to Set (ticket #2258) --- .../i2p/router/transport/udp/OutboundMessageFragments.java | 3 ++- .../java/src/net/i2p/router/transport/udp/PacketBuilder.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) 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)) {