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 14eff3ba96..da322ea25f 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 @@ -1960,9 +1960,17 @@ public class PushServiceSocket { boolean doNotAddAuthenticationOrUnidentifiedAccessKey) throws NonSuccessfulResponseCodeException, PushNetworkException, MalformedResponseException { - Response response = getServiceConnection(urlFragment, method, body, headers, unidentifiedAccessKey, doNotAddAuthenticationOrUnidentifiedAccessKey); - responseCodeHandler.handle(response.code(), response.body()); - return validateServiceResponse(response); + Response response = null; + try { + response = getServiceConnection(urlFragment, method, body, headers, unidentifiedAccessKey, doNotAddAuthenticationOrUnidentifiedAccessKey); + responseCodeHandler.handle(response.code(), response.body()); + return validateServiceResponse(response); + } catch (Exception e) { + if (response != null && response.body() != null) { + response.body().close(); + } + throw e; + } } private Response validateServiceResponse(Response response)