From 21ba6c497f588097b80b470b0cbd37584af521eb Mon Sep 17 00:00:00 2001 From: JKorf Date: Thu, 29 Nov 2018 09:48:01 +0100 Subject: [PATCH] Added explicit closing of a request response --- CryptoExchange.Net/Interfaces/IResponse.cs | 1 + CryptoExchange.Net/Requests/Response.cs | 5 +++++ CryptoExchange.Net/RestClient.cs | 13 +++++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CryptoExchange.Net/Interfaces/IResponse.cs b/CryptoExchange.Net/Interfaces/IResponse.cs index cdf6da2..816d920 100644 --- a/CryptoExchange.Net/Interfaces/IResponse.cs +++ b/CryptoExchange.Net/Interfaces/IResponse.cs @@ -5,5 +5,6 @@ namespace CryptoExchange.Net.Interfaces public interface IResponse { Stream GetResponseStream(); + void Close(); } } diff --git a/CryptoExchange.Net/Requests/Response.cs b/CryptoExchange.Net/Requests/Response.cs index f4da0af..a467f47 100644 --- a/CryptoExchange.Net/Requests/Response.cs +++ b/CryptoExchange.Net/Requests/Response.cs @@ -17,5 +17,10 @@ namespace CryptoExchange.Net.Requests { return response.GetResponseStream(); } + + public void Close() + { + response.Close(); + } } } diff --git a/CryptoExchange.Net/RestClient.cs b/CryptoExchange.Net/RestClient.cs index f8733c5..1684e78 100644 --- a/CryptoExchange.Net/RestClient.cs +++ b/CryptoExchange.Net/RestClient.cs @@ -254,8 +254,10 @@ namespace CryptoExchange.Net { returnedData = await reader.ReadToEndAsync().ConfigureAwait(false); log.Write(LogVerbosity.Debug, "Data returned: " + returnedData); - return new CallResult(returnedData, null); } + + response.Close(); + return new CallResult(returnedData, null); } catch (WebException we) { @@ -264,10 +266,12 @@ namespace CryptoExchange.Net { using (var reader = new StreamReader(response.GetResponseStream())) { - var responseData = await reader.ReadToEndAsync().ConfigureAwait(false); - log.Write(LogVerbosity.Warning, "Server returned an error: " + responseData); - return new CallResult(null, ParseErrorResponse(responseData)); + returnedData = await reader.ReadToEndAsync().ConfigureAwait(false); + log.Write(LogVerbosity.Warning, "Server returned an error: " + returnedData); } + + response.Close(); + return new CallResult(null, ParseErrorResponse(returnedData)); } catch (Exception) { @@ -283,6 +287,7 @@ namespace CryptoExchange.Net infoMessage = $"Status: {response.StatusCode}-{response.StatusDescription}, Message: {we.Message}"; log.Write(LogVerbosity.Warning, infoMessage); + response.Close(); return new CallResult(null, new ServerError(infoMessage)); } catch (Exception e)