From 02ca78ee7a4f5d621ee1a5ce0dfeacc107dc0803 Mon Sep 17 00:00:00 2001 From: Kavin <20838718+FireMasterK@users.noreply.github.com> Date: Thu, 3 Mar 2022 12:27:43 +0000 Subject: [PATCH] Manually close okhttp responses. (#210) Ensure response is closed properly. --- .../me/kavin/piped/utils/CaptchaSolver.java | 11 +++++++-- .../me/kavin/piped/utils/DownloaderImpl.java | 16 ++++++++----- .../java/me/kavin/piped/utils/LbryHelper.java | 24 +++++++++++-------- .../me/kavin/piped/utils/RequestUtils.java | 5 +++- .../me/kavin/piped/utils/ResponseHelper.java | 2 ++ 5 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/main/java/me/kavin/piped/utils/CaptchaSolver.java b/src/main/java/me/kavin/piped/utils/CaptchaSolver.java index 2032928..345eff1 100644 --- a/src/main/java/me/kavin/piped/utils/CaptchaSolver.java +++ b/src/main/java/me/kavin/piped/utils/CaptchaSolver.java @@ -41,9 +41,12 @@ public class CaptchaSolver { var builder = new Request.Builder().url(Constants.CAPTCHA_BASE_URL + "createTask") .post(RequestBody.create(JsonWriter.string(jObject), MediaType.get("application/json"))); + var resp = Constants.h2client.newCall(builder.build()).execute(); JsonObject taskObj = JsonParser.object() - .from(Constants.h2client.newCall(builder.build()).execute().body().byteStream()); + .from(resp.body().byteStream()); + + resp.close(); return taskObj.getInt("taskId"); } @@ -62,9 +65,13 @@ public class CaptchaSolver { .post(RequestBody.create(body, MediaType.get("application/json"))); builder.header("Content-Type", "application/json"); + var resp = Constants.h2client.newCall(builder.build()).execute(); + JsonObject captchaObj = JsonParser.object() - .from(Constants.h2client.newCall(builder.build()).execute().body().byteStream()); + .from(resp.body().byteStream()); + + resp.close(); if (captchaObj.getInt("errorId") != 0) break; diff --git a/src/main/java/me/kavin/piped/utils/DownloaderImpl.java b/src/main/java/me/kavin/piped/utils/DownloaderImpl.java index 01bfd94..e22f957 100644 --- a/src/main/java/me/kavin/piped/utils/DownloaderImpl.java +++ b/src/main/java/me/kavin/piped/utils/DownloaderImpl.java @@ -58,9 +58,9 @@ public class DownloaderImpl extends Downloader { request.headers().forEach((name, values) -> values.forEach(value -> builder.header(name, value))); - var response = Constants.h2client.newCall(builder.build()).execute(); + var resp = Constants.h2client.newCall(builder.build()).execute(); - if (response.code() == 429) { + if (resp.code() == 429) { synchronized (cookie_lock) { @@ -68,14 +68,14 @@ public class DownloaderImpl extends Downloader { || (System.currentTimeMillis() - cookie_received > TimeUnit.MINUTES.toMillis(30))) saved_cookie = null; - String redir_url = String.valueOf(response.request().url()); + String redir_url = String.valueOf(resp.request().url()); if (saved_cookie == null && redir_url.startsWith("https://www.google.com/sorry")) { var formBuilder = new FormBody.Builder(); String sitekey = null, data_s = null; - for (Element el : Jsoup.parse(response.body().string()).selectFirst("form").children()) { + for (Element el : Jsoup.parse(resp.body().string()).selectFirst("form").children()) { String name; if (!(name = el.tagName()).equals("script")) { if (name.equals("input")) @@ -118,7 +118,11 @@ public class DownloaderImpl extends Downloader { } - return new Response(response.code(), response.message(), response.headers().toMultimap(), response.body().string(), - String.valueOf(response.request().url())); + var response = new Response(resp.code(), resp.message(), resp.headers().toMultimap(), resp.body().string(), + String.valueOf(resp.request().url())); + + resp.close(); + + return response; } } diff --git a/src/main/java/me/kavin/piped/utils/LbryHelper.java b/src/main/java/me/kavin/piped/utils/LbryHelper.java index 355201d..dbf1da3 100644 --- a/src/main/java/me/kavin/piped/utils/LbryHelper.java +++ b/src/main/java/me/kavin/piped/utils/LbryHelper.java @@ -26,19 +26,23 @@ public class LbryHelper { var request = new Request.Builder() .url("https://api.lbry.tv/api/v1/proxy?m=get") .post(RequestBody.create(String.valueOf( - new JSONObject().put("id", System.currentTimeMillis()) - .put("jsonrpc", "2.0") - .put("method", "get") - .put("params", - new JSONObject() - .put("uri", "lbry://" + lbryId) - .put("save_file", true))) + new JSONObject().put("id", System.currentTimeMillis()) + .put("jsonrpc", "2.0") + .put("method", "get") + .put("params", + new JSONObject() + .put("uri", "lbry://" + lbryId) + .put("save_file", true))) , MediaType.get("application/json"))) .build(); - return new JSONObject( - Constants.h2client.newCall(request).execute().body().string() - ).getJSONObject("result").getString("streaming_url"); + var resp = Constants.h2client.newCall(request).execute(); + + var json = new JSONObject(resp.body().string()); + + resp.close(); + + return json.getJSONObject("result").getString("streaming_url"); } } diff --git a/src/main/java/me/kavin/piped/utils/RequestUtils.java b/src/main/java/me/kavin/piped/utils/RequestUtils.java index 2ea523d..3b2ca00 100644 --- a/src/main/java/me/kavin/piped/utils/RequestUtils.java +++ b/src/main/java/me/kavin/piped/utils/RequestUtils.java @@ -14,7 +14,10 @@ public class RequestUtils { public static String sendGet(String url, String ua) throws IOException { var request = new Request.Builder().header("User-Agent", ua).url(url).build(); + var response = Constants.h2client.newCall(request).execute(); + var responseString = response.body().string(); + response.close(); - return Constants.h2client.newCall(request).execute().body().string(); + return responseString; } } diff --git a/src/main/java/me/kavin/piped/utils/ResponseHelper.java b/src/main/java/me/kavin/piped/utils/ResponseHelper.java index 1a8d6c1..0f0e6fe 100644 --- a/src/main/java/me/kavin/piped/utils/ResponseHelper.java +++ b/src/main/java/me/kavin/piped/utils/ResponseHelper.java @@ -1095,6 +1095,8 @@ public class ResponseHelper { s.getTransaction().commit(); } else System.out.println("Failed to subscribe: " + resp.code() + "\n" + Objects.requireNonNull(resp.body()).string()); + + resp.close(); } }