Fix OkHttp connection leaks on connection error
When request fails, entire response needs to be wrapped in try with resources in order to close the connection properly and not only response body. Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
@@ -33,7 +33,6 @@ import net.runelite.http.api.RuneliteAPI;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -65,11 +64,9 @@ public class AccountClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), OAuthResponse.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
@@ -92,9 +89,7 @@ public class AccountClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
logger.debug("Sent logout request");
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ import okhttp3.MediaType;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -65,11 +64,9 @@ public class ConfigClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), Configuration.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
|
||||
@@ -32,7 +32,6 @@ import net.runelite.http.api.RuneliteAPI;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -55,11 +54,9 @@ public class HiscoreClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), HiscoreResult.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
@@ -76,24 +73,22 @@ public class HiscoreClient
|
||||
public SingleHiscoreSkillResult lookup(String username, HiscoreSkill skill, HiscoreEndpoint endpoint) throws IOException
|
||||
{
|
||||
HttpUrl.Builder builder = RuneliteAPI.getApiBase().newBuilder()
|
||||
.addPathSegment("hiscore")
|
||||
.addPathSegment(endpoint.name())
|
||||
.addPathSegment(skill.toString().toLowerCase())
|
||||
.addQueryParameter("username", username);
|
||||
.addPathSegment("hiscore")
|
||||
.addPathSegment(endpoint.name())
|
||||
.addPathSegment(skill.toString().toLowerCase())
|
||||
.addQueryParameter("username", username);
|
||||
|
||||
HttpUrl url = builder.build();
|
||||
|
||||
logger.debug("Built URI: {}", url);
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.url(url)
|
||||
.build();
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), SingleHiscoreSkillResult.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
|
||||
@@ -32,7 +32,6 @@ import net.runelite.http.api.RuneliteAPI;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -54,17 +53,15 @@ public class ItemClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
if (!response.isSuccessful())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
logger.debug("Error looking up item {}: {}", itemId, response.message());
|
||||
return null;
|
||||
}
|
||||
if (!response.isSuccessful())
|
||||
{
|
||||
logger.debug("Error looking up item {}: {}", itemId, response.message());
|
||||
return null;
|
||||
}
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), ItemPrice.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
@@ -76,28 +73,26 @@ public class ItemClient
|
||||
public SearchResult search(String itemName) throws IOException
|
||||
{
|
||||
HttpUrl url = RuneliteAPI.getApiBase().newBuilder()
|
||||
.addPathSegment("item")
|
||||
.addPathSegment("search")
|
||||
.addQueryParameter("query", itemName)
|
||||
.build();
|
||||
.addPathSegment("item")
|
||||
.addPathSegment("search")
|
||||
.addQueryParameter("query", itemName)
|
||||
.build();
|
||||
|
||||
logger.debug("Built URI: {}", url);
|
||||
|
||||
Request request = new Request.Builder()
|
||||
.url(url)
|
||||
.build();
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
if (!response.isSuccessful())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
logger.debug("Error looking up item {}: {}", itemName, response.message());
|
||||
return null;
|
||||
}
|
||||
if (!response.isSuccessful())
|
||||
{
|
||||
logger.debug("Error looking up item {}: {}", itemName, response.message());
|
||||
return null;
|
||||
}
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), SearchResult.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
|
||||
@@ -36,7 +36,6 @@ import okhttp3.MediaType;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.Response;
|
||||
import okhttp3.ResponseBody;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -83,11 +82,9 @@ public class XteaClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
// CHECKSTYLE:OFF
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<XteaKey>>() { }.getType());
|
||||
// CHECKSTYLE:ON
|
||||
@@ -109,11 +106,9 @@ public class XteaClient
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
Response response = RuneliteAPI.CLIENT.newCall(request).execute();
|
||||
|
||||
try (ResponseBody body = response.body())
|
||||
try (Response response = RuneliteAPI.CLIENT.newCall(request).execute())
|
||||
{
|
||||
InputStream in = body.byteStream();
|
||||
InputStream in = response.body().byteStream();
|
||||
return RuneliteAPI.GSON.fromJson(new InputStreamReader(in), XteaKey.class);
|
||||
}
|
||||
catch (JsonParseException ex)
|
||||
|
||||
Reference in New Issue
Block a user