From 43a13964bdbd15714dda5c12cc703a2e763d7ff0 Mon Sep 17 00:00:00 2001 From: AsamK Date: Thu, 9 Nov 2023 10:11:53 +0100 Subject: [PATCH] Fix leaking okhttp response in error case. Closes #13246 --- .../internal/push/PushServiceSocket.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 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 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)