diff --git a/src/main/java/org/qortal/network/message/GetOnlineAccountsMessage.java b/src/main/java/org/qortal/network/message/GetOnlineAccountsMessage.java index dcb24fec4..93f782dfc 100644 --- a/src/main/java/org/qortal/network/message/GetOnlineAccountsMessage.java +++ b/src/main/java/org/qortal/network/message/GetOnlineAccountsMessage.java @@ -6,6 +6,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import org.qortal.data.network.OnlineAccountData; import org.qortal.transform.Transformer; @@ -25,7 +26,7 @@ public GetOnlineAccountsMessage(List onlineAccounts) { private GetOnlineAccountsMessage(int id, List onlineAccounts) { super(id, MessageType.GET_ONLINE_ACCOUNTS); - this.onlineAccounts = onlineAccounts; + this.onlineAccounts = onlineAccounts.stream().limit(MAX_ACCOUNT_COUNT).collect(Collectors.toList()); } public List getOnlineAccounts() { @@ -35,12 +36,9 @@ public List getOnlineAccounts() { public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException { final int accountCount = bytes.getInt(); - if (accountCount > MAX_ACCOUNT_COUNT) - return null; - List onlineAccounts = new ArrayList<>(accountCount); - for (int i = 0; i < accountCount; ++i) { + for (int i = 0; i < Math.min(MAX_ACCOUNT_COUNT, accountCount); ++i) { long timestamp = bytes.getLong(); byte[] publicKey = new byte[Transformer.PUBLIC_KEY_LENGTH]; diff --git a/src/main/java/org/qortal/network/message/OnlineAccountsMessage.java b/src/main/java/org/qortal/network/message/OnlineAccountsMessage.java index 75109a0a4..6cd560099 100644 --- a/src/main/java/org/qortal/network/message/OnlineAccountsMessage.java +++ b/src/main/java/org/qortal/network/message/OnlineAccountsMessage.java @@ -6,6 +6,7 @@ import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; import org.qortal.data.network.OnlineAccountData; import org.qortal.transform.Transformer; @@ -25,7 +26,7 @@ public OnlineAccountsMessage(List onlineAccounts) { private OnlineAccountsMessage(int id, List onlineAccounts) { super(id, MessageType.ONLINE_ACCOUNTS); - this.onlineAccounts = onlineAccounts; + this.onlineAccounts = onlineAccounts.stream().limit(MAX_ACCOUNT_COUNT).collect(Collectors.toList()); } public List getOnlineAccounts() { @@ -35,12 +36,9 @@ public List getOnlineAccounts() { public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException { final int accountCount = bytes.getInt(); - if (accountCount > MAX_ACCOUNT_COUNT) - return null; - List onlineAccounts = new ArrayList<>(accountCount); - for (int i = 0; i < accountCount; ++i) { + for (int i = 0; i < Math.min(MAX_ACCOUNT_COUNT, accountCount); ++i) { long timestamp = bytes.getLong(); byte[] signature = new byte[Transformer.SIGNATURE_LENGTH];