httpclient on RegionReadyModule

This commit is contained in:
UbitUmarov
2023-05-18 17:57:15 +01:00
parent 6d144ba1c9
commit c66effbe4f
3 changed files with 36 additions and 29 deletions

View File

@@ -120,10 +120,10 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Neighbour
{
if (s.RegionInfo.RegionHandle == regionHandle)
{
// uint x, y;
// Util.RegionHandleToRegionLoc(regionHandle, out x, out y);
// m_log.DebugFormat("[NEIGHBOUR SERVICE OUT CONNECTOR]: HelloNeighbour from region {0} to neighbour {1} at {2}-{3}",
// thisRegion.RegionName, s.Name, x, y );
//uint x, y;
//Util.RegionHandleToRegionLoc(regionHandle, out x, out y);
//m_log.DebugFormat("[NEIGHBOUR SERVICE OUT CONNECTOR]: HelloNeighbour from region {0} to neighbour {1} at {2}-{3}",
// thisRegion.RegionName, s.Name, x, y );
return s.IncomingHelloNeighbour(thisRegion);
}
}

View File

@@ -41,6 +41,8 @@ using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes;
using OpenSim.Services.Interfaces;
using System.Net.Http;
using System.Threading;
namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
{
@@ -155,7 +157,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
if (m_firstEmptyCompileQueue || m_oarFileLoading)
{
OSChatMessage c = new OSChatMessage
OSChatMessage c = new()
{
From = "RegionReady",
Message = (m_firstEmptyCompileQueue ? "server_startup," : ("oar_file_load," + (m_lastOarLoadedOk ? "1," : "0,"))) +
@@ -260,39 +262,42 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
public void RRAlert(string status)
{
string request_method = "POST";
string content_type = "application/json";
OSDMap RRAlert = new OSDMap();
OSDMap RRAlert = new()
{
["alert"] = "region_ready",
["login"] = status,
["region_name"] = m_scene.RegionInfo.RegionName,
["region_id"] = m_scene.RegionInfo.RegionID
};
RRAlert["alert"] = "region_ready";
RRAlert["login"] = status;
RRAlert["region_name"] = m_scene.RegionInfo.RegionName;
RRAlert["region_id"] = m_scene.RegionInfo.RegionID;
string strBuffer = "";
byte[] buffer = new byte[1];
byte[] buffer;
try
{
strBuffer = OSDParser.SerializeJsonString(RRAlert);
Encoding str = Util.UTF8;
buffer = str.GetBytes(strBuffer);
buffer = OSDParser.SerializeJsonToBytes(RRAlert); ;
}
catch (Exception e)
{
m_log.WarnFormat("[RegionReady]: Exception thrown on alert: {0}", e.Message);
return;
}
WebRequest request = WebRequest.Create(m_uri);
request.Method = request_method;
request.ContentType = content_type;
Stream os = null;
HttpResponseMessage responseMessage = null;
HttpRequestMessage request = null;
try
{
request.ContentLength = buffer.Length;
os = request.GetRequestStream();
os.Write(buffer, 0, strBuffer.Length);
HttpClient client = WebUtil.SharedHttpClientWithRedir;
request = new(HttpMethod.Post, m_uri);
request.Headers.ExpectContinue = false;
request.Headers.TransferEncodingChunked = false;
request.Headers.TryAddWithoutValidation("Connection", "close");
request.Content = new ByteArrayContent(buffer);
request.Content.Headers.TryAddWithoutValidation("Content-Type", "application/json");
request.Content.Headers.TryAddWithoutValidation("Content-Length", buffer.Length.ToString());
responseMessage = client.Send(request, HttpCompletionOption.ResponseContentRead);
responseMessage.EnsureSuccessStatusCode();
}
catch(Exception e)
{
@@ -300,8 +305,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.RegionReady
}
finally
{
if (os != null)
os.Dispose();
request?.Dispose();
responseMessage?.Dispose();
}
}
}

View File

@@ -30,6 +30,8 @@ using System;
using System.Net;
using System.Reflection;
using Nini.Config;
using System.Net.Http;
using OpenSim.Framework;
namespace OpenSim.Services.Connectors
{