mirror of https://github.com/opensim/opensim.git
change share of almost empty class httpclient, to just share of used SocketsHttpHandler, This simpifies handling of timeout, otherwise problematic
This commit is contained in:
parent
c90858576c
commit
e950c502ad
|
@ -88,7 +88,7 @@ namespace OpenSim.Framework
|
|||
/// <summary>
|
||||
/// Default time out period
|
||||
/// </summary>
|
||||
private const int DefaultTimeout = 90; // 90 seconds timeout
|
||||
private const int DefaultTimeout = 90000; // 90 seconds timeout
|
||||
|
||||
/// <summary>
|
||||
/// Default Buffer size of a block requested from the web-server
|
||||
|
@ -258,10 +258,10 @@ namespace OpenSim.Framework
|
|||
Uri uri = null;
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(DefaultTimeout);
|
||||
uri = buildUri();
|
||||
request = new(new HttpMethod(RequestMethod), uri);
|
||||
|
||||
|
@ -278,13 +278,12 @@ namespace OpenSim.Framework
|
|||
//else
|
||||
// request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(DefaultTimeout));
|
||||
|
||||
if (WebUtil.DebugLevel >= 3)
|
||||
m_log.DebugFormat("[REST CLIENT] {0} to {1}", RequestMethod, uri);
|
||||
|
||||
//_request.ContentType = "application/xml";
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
Stream respStream = responseMessage.Content.ReadAsStream();
|
||||
|
@ -326,7 +325,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
|
||||
if (_resource != null)
|
||||
|
@ -348,10 +347,10 @@ namespace OpenSim.Framework
|
|||
Uri uri = null;
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(DefaultTimeout);
|
||||
uri = buildUri();
|
||||
request = new(HttpMethod.Post, uri);
|
||||
|
||||
|
@ -368,13 +367,11 @@ namespace OpenSim.Framework
|
|||
//else
|
||||
// request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(DefaultTimeout));
|
||||
|
||||
request.Content = new ByteArrayContent(src);
|
||||
request.Content.Headers.TryAddWithoutValidation("Content-Type", "application/xml");
|
||||
request.Content.Headers.TryAddWithoutValidation("Content-Length", src.Length.ToString());
|
||||
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseContentRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseContentRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
}
|
||||
catch (HttpRequestException e)
|
||||
|
@ -402,7 +399,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -55,6 +55,7 @@ using OpenMetaverse;
|
|||
using OpenMetaverse.StructuredData;
|
||||
using Amib.Threading;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace OpenSim.Framework
|
||||
{
|
||||
|
@ -2194,6 +2195,7 @@ namespace OpenSim.Framework
|
|||
return ms;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public static XmlRpcResponse XmlRpcCommand(string url, string methodName, params object[] args)
|
||||
{
|
||||
return SendXmlRpcCommand(url, methodName, args);
|
||||
|
@ -2201,8 +2203,9 @@ namespace OpenSim.Framework
|
|||
|
||||
public static XmlRpcResponse SendXmlRpcCommand(string url, string methodName, object[] args)
|
||||
{
|
||||
XmlRpcRequest client = new(methodName, args);
|
||||
return client.Send(url, WebUtil.SharedHttpClientWithRedir, 6000);
|
||||
XmlRpcRequest xmlclient = new(methodName, args);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
return xmlclient.Send(url, hclient);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -60,11 +60,8 @@ namespace OpenSim.Framework
|
|||
{
|
||||
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
public static SocketsHttpHandler SharedSocketsHttpHandlerNoRedir = null;
|
||||
public static SocketsHttpHandler SharedSocketsHttpHandler = null;
|
||||
public static HttpClient SharedHttpClient = null;
|
||||
|
||||
public static SocketsHttpHandler SharedSocketsHttpHandlerWithRedir = null;
|
||||
public static HttpClient SharedHttpClientWithRedir = null;
|
||||
|
||||
public static ExpiringKey<string> GlobalExpiringBadURLs = new(30000);
|
||||
/// <summary>
|
||||
|
@ -177,15 +174,7 @@ namespace OpenSim.Framework
|
|||
shh.UseProxy = true;
|
||||
}
|
||||
|
||||
var client = new HttpClient(shh)
|
||||
{
|
||||
Timeout = TimeSpan.FromMilliseconds(30000),
|
||||
MaxResponseContentBufferSize = 250 * 1024 * 1024,
|
||||
};
|
||||
client.DefaultRequestHeaders.ExpectContinue = false;
|
||||
|
||||
SharedSocketsHttpHandler = shh;
|
||||
SharedHttpClient = client;
|
||||
SharedSocketsHttpHandlerNoRedir = shh;
|
||||
|
||||
// ****************
|
||||
|
||||
|
@ -250,16 +239,29 @@ namespace OpenSim.Framework
|
|||
shh.Proxy = proxy;
|
||||
shh.UseProxy = true;
|
||||
}
|
||||
SharedSocketsHttpHandler = shh;
|
||||
}
|
||||
|
||||
client = new HttpClient(shh)
|
||||
public static HttpClient GetNewGlobalHttpClient(int timeout)
|
||||
{
|
||||
var client = new HttpClient(SharedSocketsHttpHandler, false)
|
||||
{
|
||||
Timeout = TimeSpan.FromMilliseconds(30000),
|
||||
Timeout = TimeSpan.FromMilliseconds(timeout > 0 ? timeout : 30000),
|
||||
MaxResponseContentBufferSize = 250 * 1024 * 1024,
|
||||
};
|
||||
client.DefaultRequestHeaders.ExpectContinue = false;
|
||||
return client;
|
||||
}
|
||||
|
||||
SharedSocketsHttpHandlerWithRedir = shh;
|
||||
SharedHttpClientWithRedir = client;
|
||||
public static HttpClient GetGlobalNoRedirHttpClient(int timeout)
|
||||
{
|
||||
var client = new HttpClient(SharedSocketsHttpHandlerNoRedir, false)
|
||||
{
|
||||
Timeout = TimeSpan.FromMilliseconds(timeout > 0 ? timeout : 30000),
|
||||
MaxResponseContentBufferSize = 250 * 1024 * 1024,
|
||||
};
|
||||
client.DefaultRequestHeaders.ExpectContinue = false;
|
||||
return client;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -366,11 +368,10 @@ namespace OpenSim.Framework
|
|||
int rcvlen = 0;
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = SharedHttpClientWithRedir;
|
||||
|
||||
client = GetNewGlobalHttpClient(timeout);
|
||||
request = new(new HttpMethod(method), url);
|
||||
|
||||
if (data is not null)
|
||||
|
@ -418,16 +419,9 @@ namespace OpenSim.Framework
|
|||
else
|
||||
request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
if(timeout > 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(timeout));
|
||||
|
||||
request.Headers.TryAddWithoutValidation(OSHeaderRequestID, reqnum.ToString());
|
||||
|
||||
if (cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
Stream resStream = responseMessage.Content.ReadAsStream();
|
||||
|
@ -455,7 +449,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
|
||||
ticks = Util.EnvironmentTickCountSubtract(ticks);
|
||||
if (ticks > LongCallTime)
|
||||
|
@ -549,10 +543,10 @@ namespace OpenSim.Framework
|
|||
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = GetNewGlobalHttpClient(timeout);
|
||||
|
||||
request = new(HttpMethod.Post, url);
|
||||
|
||||
|
@ -568,9 +562,6 @@ namespace OpenSim.Framework
|
|||
//else
|
||||
request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
if (timeout > 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(timeout));
|
||||
|
||||
request.Headers.TryAddWithoutValidation(OSHeaderRequestID, reqnum.ToString());
|
||||
|
||||
if (data is not null)
|
||||
|
@ -596,10 +587,7 @@ namespace OpenSim.Framework
|
|||
request.Content.Headers.TryAddWithoutValidation("Content-Length", "0");
|
||||
}
|
||||
|
||||
if (cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
using StreamReader reader = new(responseMessage.Content.ReadAsStream());
|
||||
|
@ -627,7 +615,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
|
||||
ticks = Util.EnvironmentTickCountSubtract(ticks);
|
||||
if (ticks > LongCallTime)
|
||||
|
@ -1160,13 +1148,13 @@ namespace OpenSim.Framework
|
|||
int ticks = Util.EnvironmentTickCount();
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
string respstring = String.Empty;
|
||||
int sendlen = 0;
|
||||
int rcvlen = 0;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(timeoutsecs * 1000);
|
||||
|
||||
request = new(new HttpMethod(method), requestUrl);
|
||||
|
||||
|
@ -1175,9 +1163,6 @@ namespace OpenSim.Framework
|
|||
request.Headers.ExpectContinue = false;
|
||||
request.Headers.TransferEncodingChunked = false; if (timeoutsecs > 0)
|
||||
|
||||
if(timeoutsecs > 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(timeoutsecs));
|
||||
|
||||
if (keepalive)
|
||||
{
|
||||
request.Headers.TryAddWithoutValidation("Keep-Alive", "timeout=30, max=10");
|
||||
|
@ -1202,10 +1187,7 @@ namespace OpenSim.Framework
|
|||
request.Content.Headers.TryAddWithoutValidation("Content-Length", sendlen.ToString());
|
||||
}
|
||||
|
||||
if (cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
||||
|
@ -1224,7 +1206,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
|
||||
ticks = Util.EnvironmentTickCountSubtract(ticks);
|
||||
|
@ -1259,14 +1241,13 @@ namespace OpenSim.Framework
|
|||
int ticks = Util.EnvironmentTickCount();
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
string respstring = String.Empty;
|
||||
int sendlen = 0;
|
||||
int rcvlen = 0;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
|
||||
client = WebUtil.GetNewGlobalHttpClient(timeoutsecs * 1000);
|
||||
request = new(HttpMethod.Post, requestUrl);
|
||||
|
||||
auth?.AddAuthorization(request.Headers);
|
||||
|
@ -1283,9 +1264,6 @@ namespace OpenSim.Framework
|
|||
else
|
||||
request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
if (timeoutsecs > 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(timeoutsecs));
|
||||
|
||||
byte[] data = Util.UTF8NBGetbytes(obj);
|
||||
sendlen = data.Length;
|
||||
request.Content = new ByteArrayContent(data);
|
||||
|
@ -1295,10 +1273,7 @@ namespace OpenSim.Framework
|
|||
if (WebUtil.DebugLevel >= 5)
|
||||
WebUtil.LogOutgoingDetail("SEND", reqnum, System.Text.Encoding.UTF8.GetString(data));
|
||||
|
||||
if (cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
|
||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
||||
{
|
||||
|
@ -1315,7 +1290,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
|
||||
ticks = Util.EnvironmentTickCountSubtract(ticks);
|
||||
|
@ -1401,11 +1376,11 @@ namespace OpenSim.Framework
|
|||
TResponse deserial = default;
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(pTimeout);
|
||||
|
||||
request = new(new HttpMethod(method), requestUrl);
|
||||
|
||||
|
@ -1423,9 +1398,6 @@ namespace OpenSim.Framework
|
|||
//else
|
||||
// request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
if (pTimeout != 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(pTimeout));
|
||||
|
||||
if (method.Equals("POST",StringComparison.OrdinalIgnoreCase) || method.Equals("PUT", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
byte[] data;
|
||||
|
@ -1448,10 +1420,7 @@ namespace OpenSim.Framework
|
|||
request.Content.Headers.TryAddWithoutValidation("Content-Length", sendlen.ToString());
|
||||
}
|
||||
|
||||
if(cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
int rcvlen = 0;
|
||||
|
@ -1508,7 +1477,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
|
||||
return deserial;
|
||||
|
@ -1525,12 +1494,10 @@ namespace OpenSim.Framework
|
|||
TResponse deserial = default;
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
|
||||
|
||||
client = WebUtil.GetNewGlobalHttpClient(pTimeout);
|
||||
request = new(HttpMethod.Get, requestUrl);
|
||||
|
||||
auth?.AddAuthorization(request.Headers);
|
||||
|
@ -1547,13 +1514,7 @@ namespace OpenSim.Framework
|
|||
//else
|
||||
// request.Headers.TryAddWithoutValidation("Connection", "close");
|
||||
|
||||
if (pTimeout != 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromMilliseconds(pTimeout));
|
||||
|
||||
if (cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
int rcvlen = 0;
|
||||
|
@ -1608,7 +1569,7 @@ namespace OpenSim.Framework
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
return deserial;
|
||||
}
|
||||
|
@ -1674,7 +1635,7 @@ namespace OpenSim.Framework
|
|||
|
||||
int tickstart = Util.EnvironmentTickCount();
|
||||
string responseStr = null;
|
||||
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
ArrayList SendParams = new()
|
||||
|
@ -1691,7 +1652,8 @@ namespace OpenSim.Framework
|
|||
WebUtil.LogOutgoingDetail("SEND", reqnum, str);
|
||||
}
|
||||
|
||||
XmlRpcResponse Resp = Req.Send(url, WebUtil.SharedHttpClientWithRedir, 30000);
|
||||
client = WebUtil.GetNewGlobalHttpClient(-1);
|
||||
XmlRpcResponse Resp = Req.Send(url, client);
|
||||
|
||||
try
|
||||
{
|
||||
|
@ -1719,6 +1681,8 @@ namespace OpenSim.Framework
|
|||
}
|
||||
finally
|
||||
{
|
||||
client?.Dispose();
|
||||
|
||||
int tickdiff = Util.EnvironmentTickCountSubtract(tickstart);
|
||||
if (tickdiff > WebUtil.LongCallTime)
|
||||
{
|
||||
|
|
|
@ -41,6 +41,7 @@ using OpenSim.Region.Framework.Scenes;
|
|||
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
|
||||
using PresenceInfo = OpenSim.Services.Interfaces.PresenceInfo;
|
||||
using OpenSim.Services.Interfaces;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
||||
{
|
||||
|
@ -597,9 +598,11 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
|||
ArrayList SendParams = new ArrayList();
|
||||
SendParams.Add(xmlrpcdata);
|
||||
XmlRpcRequest GridReq = new XmlRpcRequest("grid_instant_message", SendParams);
|
||||
HttpClient hclient = null;
|
||||
try
|
||||
{
|
||||
XmlRpcResponse GridResp = GridReq.Send(reginfo.ServerURI, WebUtil.SharedHttpClientWithRedir, 6000);
|
||||
hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
XmlRpcResponse GridResp = GridReq.Send(reginfo.ServerURI, hclient);
|
||||
Hashtable responseData = (Hashtable)GridResp.Value;
|
||||
if (responseData.ContainsKey("success"))
|
||||
{
|
||||
|
@ -621,6 +624,10 @@ namespace OpenSim.Region.CoreModules.Avatar.InstantMessage
|
|||
{
|
||||
m_log.ErrorFormat("[GRID INSTANT MESSAGE]: Error sending message to {0} : {1}", reginfo.ServerURI.ToString(), e.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
hclient?.Dispose();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ using OpenSim.Framework.Servers.HttpServer;
|
|||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
using Mono.Addins;
|
||||
using System.Net.Http;
|
||||
|
||||
/*****************************************************
|
||||
*
|
||||
|
@ -686,9 +687,11 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
|
|||
ArrayList parameters = new ArrayList();
|
||||
parameters.Add(param);
|
||||
XmlRpcRequest req = new XmlRpcRequest(mName, parameters);
|
||||
HttpClient hclient = null;
|
||||
try
|
||||
{
|
||||
XmlRpcResponse resp = req.Send(DestURL, WebUtil.SharedHttpClientWithRedir, 30000);
|
||||
hclient = WebUtil.GetNewGlobalHttpClient(-1);
|
||||
XmlRpcResponse resp = req.Send(DestURL, hclient);
|
||||
if (resp != null)
|
||||
{
|
||||
Hashtable respParms;
|
||||
|
@ -733,6 +736,7 @@ namespace OpenSim.Region.CoreModules.Scripting.XMLRPC
|
|||
_finished = true;
|
||||
httpThread = null;
|
||||
Watchdog.RemoveThread();
|
||||
hclient?.Dispose();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -283,9 +283,10 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
|
|||
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(-1);
|
||||
|
||||
request = new(HttpMethod.Post, m_uri);
|
||||
request.Headers.ExpectContinue = false;
|
||||
|
@ -307,6 +308,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ using Nwc.XmlRpc;
|
|||
using log4net;
|
||||
|
||||
using OpenSim.Services.Connectors.Simulation;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace OpenSim.Services.Connectors.Hypergrid
|
||||
{
|
||||
|
@ -94,7 +95,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(info.ServerURI, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
response = request.Send(info.ServerURI, hclient);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -230,7 +232,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(gatekeeper.ServerURI, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
response = request.Send(gatekeeper.ServerURI, hclient);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -41,6 +41,7 @@ using OpenMetaverse.StructuredData;
|
|||
using log4net;
|
||||
using Nwc.XmlRpc;
|
||||
using Nini.Config;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace OpenSim.Services.Connectors.Hypergrid
|
||||
{
|
||||
|
@ -162,7 +163,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(m_ServerURL, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
response = request.Send(m_ServerURL, hclient);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -336,7 +338,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(m_ServerURL, WebUtil.SharedHttpClientWithRedir, 6000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
response = request.Send(m_ServerURL, hclient);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -408,7 +411,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(m_ServerURL, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
response = request.Send(m_ServerURL, hclient);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
@ -558,7 +562,8 @@ namespace OpenSim.Services.Connectors.Hypergrid
|
|||
XmlRpcResponse response = null;
|
||||
try
|
||||
{
|
||||
response = request.Send(m_ServerURL, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
response = request.Send(m_ServerURL, hclient);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -35,6 +35,7 @@ using Nwc.XmlRpc;
|
|||
using log4net;
|
||||
|
||||
using OpenSim.Framework;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace OpenSim.Services.Connectors.InstantMessage
|
||||
{
|
||||
|
@ -60,8 +61,8 @@ namespace OpenSim.Services.Connectors.InstantMessage
|
|||
XmlRpcRequest GridReq = new XmlRpcRequest("grid_instant_message", SendParams);
|
||||
try
|
||||
{
|
||||
|
||||
XmlRpcResponse GridResp = GridReq.Send(url, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
XmlRpcResponse GridResp = GridReq.Send(url, hclient);
|
||||
|
||||
Hashtable responseData = (Hashtable)GridResp.Value;
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ namespace OpenSim.Services.Connectors
|
|||
/// <remarks>
|
||||
/// In this case, -1 is default timeout (100 seconds), not infinite.
|
||||
/// </remarks>
|
||||
private int m_requestTimeoutSecs = -1;
|
||||
private int m_requestTimeout = -1;
|
||||
private readonly string m_configName = "InventoryService";
|
||||
|
||||
private const double CACHE_EXPIRATION_SECONDS = 30.0;
|
||||
|
@ -114,7 +114,7 @@ namespace OpenSim.Services.Connectors
|
|||
else
|
||||
m_InventoryURL = serviceURI + "/xinventory";
|
||||
|
||||
m_requestTimeoutSecs = config.GetInt("RemoteRequestTimeout", m_requestTimeoutSecs);
|
||||
m_requestTimeout = 1000 * config.GetInt("RemoteRequestTimeout", -1);
|
||||
|
||||
StatsManager.RegisterStat(
|
||||
new Stat(
|
||||
|
@ -761,10 +761,10 @@ namespace OpenSim.Services.Connectors
|
|||
int rcvlen = 0;
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(m_requestTimeout);
|
||||
|
||||
request = new(HttpMethod.Post, m_InventoryURL);
|
||||
|
||||
|
@ -782,9 +782,6 @@ namespace OpenSim.Services.Connectors
|
|||
request.Headers.ExpectContinue = false;
|
||||
request.Headers.TransferEncodingChunked = false;
|
||||
|
||||
if (m_requestTimeoutSecs > 0)
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(m_requestTimeoutSecs));
|
||||
|
||||
byte[] data = Util.UTF8NBGetbytes(obj);
|
||||
sendlen = data.Length;
|
||||
|
||||
|
@ -792,10 +789,7 @@ namespace OpenSim.Services.Connectors
|
|||
request.Content.Headers.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded");
|
||||
request.Content.Headers.TryAddWithoutValidation("Content-Length", sendlen.ToString());
|
||||
|
||||
if (cancellationToken is null)
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
else
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseHeadersRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
if ((responseMessage.Content.Headers.ContentLength is long contentLength) && contentLength != 0)
|
||||
|
@ -813,7 +807,7 @@ namespace OpenSim.Services.Connectors
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
|
||||
ticks = Util.EnvironmentTickCountSubtract(ticks);
|
||||
|
|
|
@ -38,6 +38,7 @@ using OpenSim.Services.Interfaces;
|
|||
using OpenMetaverse;
|
||||
using Nwc.XmlRpc;
|
||||
using GridRegion = OpenSim.Services.Interfaces.GridRegion;
|
||||
using System.Net.Http;
|
||||
|
||||
namespace OpenSim.Services.Connectors
|
||||
{
|
||||
|
@ -92,7 +93,8 @@ namespace OpenSim.Services.Connectors
|
|||
paramList.Add(hash);
|
||||
|
||||
XmlRpcRequest request = new XmlRpcRequest("land_data", paramList);
|
||||
XmlRpcResponse response = request.Send(info.ServerURI, WebUtil.SharedHttpClientWithRedir, 10000);
|
||||
using HttpClient hclient = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
XmlRpcResponse response = request.Send(info.ServerURI, hclient);
|
||||
if (response.IsFault)
|
||||
{
|
||||
m_log.ErrorFormat("[LAND CONNECTOR]: remote call returned an error: {0}", response.FaultString);
|
||||
|
|
|
@ -108,10 +108,10 @@ namespace OpenSim.Services.Connectors
|
|||
|
||||
HttpResponseMessage responseMessage = null;
|
||||
HttpRequestMessage request = null;
|
||||
CancellationTokenSource cancellationToken = null;
|
||||
HttpClient client = null;
|
||||
try
|
||||
{
|
||||
HttpClient client = WebUtil.SharedHttpClientWithRedir;
|
||||
client = WebUtil.GetNewGlobalHttpClient(10000);
|
||||
request = new(HttpMethod.Post, uri);
|
||||
request.Headers.ExpectContinue = false;
|
||||
request.Headers.TransferEncodingChunked = false;
|
||||
|
@ -127,10 +127,9 @@ namespace OpenSim.Services.Connectors
|
|||
request.Content.Headers.TryAddWithoutValidation("Content-Type", "application/json");
|
||||
request.Content.Headers.TryAddWithoutValidation("Content-Length", buffer.Length.ToString());
|
||||
|
||||
cancellationToken = new CancellationTokenSource(TimeSpan.FromSeconds(10));
|
||||
//m_log.InfoFormat("[REST COMMS]: Posted HelloNeighbour request to remote sim {0}", uri);
|
||||
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseContentRead, cancellationToken.Token);
|
||||
responseMessage = client.Send(request, HttpCompletionOption.ResponseContentRead);
|
||||
responseMessage.EnsureSuccessStatusCode();
|
||||
|
||||
//using StreamReader sr = new(responseMessage.Content.ReadAsStream());
|
||||
|
@ -149,7 +148,7 @@ namespace OpenSim.Services.Connectors
|
|||
{
|
||||
request?.Dispose();
|
||||
responseMessage?.Dispose();
|
||||
cancellationToken?.Dispose();
|
||||
client?.Dispose();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
BIN
bin/XMLRPC.dll
BIN
bin/XMLRPC.dll
Binary file not shown.
Loading…
Reference in New Issue