diff --git a/OpenSim/Framework/RestClient.cs b/OpenSim/Framework/RestClient.cs index c0826fb378..b89160f7e2 100644 --- a/OpenSim/Framework/RestClient.cs +++ b/OpenSim/Framework/RestClient.cs @@ -286,7 +286,8 @@ namespace OpenSim.Framework responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead); responseMessage.EnsureSuccessStatusCode(); - Stream respStream = responseMessage.Content.ReadAsStream(); + using CancellationTokenSource cts = new(30000); + using Stream respStream = responseMessage.Content.ReadAsStream(cts.Token); int length = respStream.Read(_readbuf, 0, BufferSize); while (length > 0) { diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index 1341feb773..6ed8a04fc9 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -37,6 +37,7 @@ using System.Net.Security; using System.Security.Cryptography.X509Certificates; using System.Reflection; using System.Text; +using System.Threading; using System.Web; using System.Xml; using System.Xml.Serialization; @@ -424,7 +425,8 @@ namespace OpenSim.Framework responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead); responseMessage.EnsureSuccessStatusCode(); - Stream resStream = responseMessage.Content.ReadAsStream(); + using CancellationTokenSource cts = new(30000); + Stream resStream = responseMessage.Content.ReadAsStream(cts.Token); if (resStream is not null) { using StreamReader reader = new(resStream); @@ -589,7 +591,8 @@ namespace OpenSim.Framework responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead); responseMessage.EnsureSuccessStatusCode(); - using StreamReader reader = new(responseMessage.Content.ReadAsStream()); + using CancellationTokenSource cts = new(30000); + using StreamReader reader = new(responseMessage.Content.ReadAsStream(cts.Token)); string responseStr = reader.ReadToEnd(); rcvlen = responseStr.Length; if (DebugLevel >= 5) @@ -1160,7 +1163,7 @@ namespace OpenSim.Framework auth?.AddAuthorization(request.Headers); request.Headers.ExpectContinue = false; - request.Headers.TransferEncodingChunked = false; if (timeoutsecs > 0) + request.Headers.TransferEncodingChunked = false; if (keepalive) { @@ -1191,7 +1194,8 @@ namespace OpenSim.Framework if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0) { - using StreamReader reader = new(responseMessage.Content.ReadAsStream()); + using CancellationTokenSource cts = new(30000); + using StreamReader reader = new(responseMessage.Content.ReadAsStream(cts.Token)); respstring = reader.ReadToEnd(); rcvlen = respstring.Length; } @@ -1276,7 +1280,8 @@ namespace OpenSim.Framework if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0) { - using StreamReader reader = new(responseMessage.Content.ReadAsStream()); + using CancellationTokenSource cts = new(30000); + using StreamReader reader = new(responseMessage.Content.ReadAsStream(cts.Token)); respstring = reader.ReadToEnd(); } } @@ -1426,7 +1431,8 @@ namespace OpenSim.Framework if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0) { rcvlen = (int)contentLength; - using Stream respStream = responseMessage.Content.ReadAsStream(); + using CancellationTokenSource cts = new(30000); + using Stream respStream = responseMessage.Content.ReadAsStream(cts.Token); deserial = XMLResponseHelper.LogAndDeserialize( reqnum, respStream, contentLength); } @@ -1520,7 +1526,8 @@ namespace OpenSim.Framework if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0) { rcvlen = (int)contentLength; - using Stream respStream = responseMessage.Content.ReadAsStream(); + using CancellationTokenSource cts = new(30000); + using Stream respStream = responseMessage.Content.ReadAsStream(cts.Token); deserial = XMLResponseHelper.LogAndDeserialize( reqnum, respStream, contentLength); } diff --git a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs index 9d549e9292..0d477b13a0 100644 --- a/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs +++ b/OpenSim/Region/CoreModules/Scripting/HttpRequest/ScriptsHttpRequests.cs @@ -644,8 +644,8 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest else len = -1; - Stream resStream = responseMessage.Content.ReadAsStream(); - + using CancellationTokenSource cts = new(30000); + Stream resStream = responseMessage.Content.ReadAsStream(cts.Token); if(resStream is not null) { int maxBytes = (len < 0 || len > HttpBodyMaxLen) ? HttpBodyMaxLen : len;