From 6502ef64cea486618cf4b72c6e50b94362547e9c Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Wed, 23 Jun 2021 17:47:05 -0400 Subject: [PATCH] Read the group history response as a stream. --- .../internal/push/PushServiceSocket.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java index a62f465c04..23dc9940a9 100644 --- a/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java +++ b/libsignal/service/src/main/java/org/whispersystems/signalservice/internal/push/PushServiceSocket.java @@ -2189,7 +2189,7 @@ public class PushServiceSocket { } public GroupHistory getGroupsV2GroupHistory(int fromVersion, GroupsV2AuthorizationString authorization) - throws IOException, InvalidProtocolBufferException + throws IOException { Response response = makeStorageRequestResponse(authorization.toString(), String.format(Locale.US, GROUPSV2_GROUP_CHANGES, fromVersion), @@ -2197,7 +2197,16 @@ public class PushServiceSocket { null, GROUPS_V2_GET_LOGS_HANDLER); - GroupChanges groupChanges = GroupChanges.parseFrom(readBodyBytes(response.body())); + if (response.body() == null) { + throw new PushNetworkException("No body!"); + } + + GroupChanges groupChanges; + try { + groupChanges = GroupChanges.parseFrom(response.body().byteStream()); + } catch (IOException e) { + throw new PushNetworkException(e); + } if (response.code() == 206) { String contentRangeHeader = response.header("Content-Range");