try to timeout httpclient reads
This commit is contained in:
@@ -286,7 +286,8 @@ namespace OpenSim.Framework
|
|||||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||||
responseMessage.EnsureSuccessStatusCode();
|
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);
|
int length = respStream.Read(_readbuf, 0, BufferSize);
|
||||||
while (length > 0)
|
while (length > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ using System.Net.Security;
|
|||||||
using System.Security.Cryptography.X509Certificates;
|
using System.Security.Cryptography.X509Certificates;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Serialization;
|
using System.Xml.Serialization;
|
||||||
@@ -424,7 +425,8 @@ namespace OpenSim.Framework
|
|||||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||||
responseMessage.EnsureSuccessStatusCode();
|
responseMessage.EnsureSuccessStatusCode();
|
||||||
|
|
||||||
Stream resStream = responseMessage.Content.ReadAsStream();
|
using CancellationTokenSource cts = new(30000);
|
||||||
|
Stream resStream = responseMessage.Content.ReadAsStream(cts.Token);
|
||||||
if (resStream is not null)
|
if (resStream is not null)
|
||||||
{
|
{
|
||||||
using StreamReader reader = new(resStream);
|
using StreamReader reader = new(resStream);
|
||||||
@@ -589,7 +591,8 @@ namespace OpenSim.Framework
|
|||||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||||
responseMessage.EnsureSuccessStatusCode();
|
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();
|
string responseStr = reader.ReadToEnd();
|
||||||
rcvlen = responseStr.Length;
|
rcvlen = responseStr.Length;
|
||||||
if (DebugLevel >= 5)
|
if (DebugLevel >= 5)
|
||||||
@@ -1160,7 +1163,7 @@ namespace OpenSim.Framework
|
|||||||
auth?.AddAuthorization(request.Headers);
|
auth?.AddAuthorization(request.Headers);
|
||||||
|
|
||||||
request.Headers.ExpectContinue = false;
|
request.Headers.ExpectContinue = false;
|
||||||
request.Headers.TransferEncodingChunked = false; if (timeoutsecs > 0)
|
request.Headers.TransferEncodingChunked = false;
|
||||||
|
|
||||||
if (keepalive)
|
if (keepalive)
|
||||||
{
|
{
|
||||||
@@ -1191,7 +1194,8 @@ namespace OpenSim.Framework
|
|||||||
|
|
||||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
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();
|
respstring = reader.ReadToEnd();
|
||||||
rcvlen = respstring.Length;
|
rcvlen = respstring.Length;
|
||||||
}
|
}
|
||||||
@@ -1276,7 +1280,8 @@ namespace OpenSim.Framework
|
|||||||
|
|
||||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
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();
|
respstring = reader.ReadToEnd();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1426,7 +1431,8 @@ namespace OpenSim.Framework
|
|||||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
||||||
{
|
{
|
||||||
rcvlen = (int)contentLength;
|
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<TResponse>(
|
deserial = XMLResponseHelper.LogAndDeserialize<TResponse>(
|
||||||
reqnum, respStream, contentLength);
|
reqnum, respStream, contentLength);
|
||||||
}
|
}
|
||||||
@@ -1520,7 +1526,8 @@ namespace OpenSim.Framework
|
|||||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
||||||
{
|
{
|
||||||
rcvlen = (int)contentLength;
|
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<TResponse>(
|
deserial = XMLResponseHelper.LogAndDeserialize<TResponse>(
|
||||||
reqnum, respStream, contentLength);
|
reqnum, respStream, contentLength);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -644,8 +644,8 @@ namespace OpenSim.Region.CoreModules.Scripting.HttpRequest
|
|||||||
else
|
else
|
||||||
len = -1;
|
len = -1;
|
||||||
|
|
||||||
Stream resStream = responseMessage.Content.ReadAsStream();
|
using CancellationTokenSource cts = new(30000);
|
||||||
|
Stream resStream = responseMessage.Content.ReadAsStream(cts.Token);
|
||||||
if(resStream is not null)
|
if(resStream is not null)
|
||||||
{
|
{
|
||||||
int maxBytes = (len < 0 || len > HttpBodyMaxLen) ? HttpBodyMaxLen : len;
|
int maxBytes = (len < 0 || len > HttpBodyMaxLen) ? HttpBodyMaxLen : len;
|
||||||
|
|||||||
Reference in New Issue
Block a user