Merge branch 'opensim:master' into master

This commit is contained in:
AdilElFarissi
2024-04-13 05:44:53 +00:00
committed by GitHub
10 changed files with 58 additions and 74 deletions

View File

@@ -82,8 +82,8 @@ namespace OpenSim.Framework.Servers
m_osSecret = UUID.Random().ToString();
}
private static bool m_NoVerifyCertChain = false;
private static bool m_NoVerifyCertHostname = false;
private static bool m_NoVerifyCertChain = true;
private static bool m_NoVerifyCertHostname = true;
public static bool ValidateServerCertificate(
object sender,

View File

@@ -71,8 +71,9 @@ namespace OSHttpServer
/// <returns><see cref="HttpInputItem.Empty"/> if no item was found.</returns>
public HttpInputItem this[string name]
{
get {
return _items.ContainsKey(name) ? _items[name] : Empty;
get
{
return _items.TryGetValue(name, out HttpInputItem hii) ? hii : Empty;
}
}
@@ -144,7 +145,7 @@ namespace OSHttpServer
/// <returns>true if the sub-item exists and has a value; otherwise false.</returns>
public bool Contains(string name)
{
return _items.ContainsKey(name) && _items[name].Value != null;
return _items.TryGetValue(name, out HttpInputItem hii) && hii.Value != null;
}
/// <summary> Returns a formatted representation of the instance with the values of all contained parameters </summary>
@@ -216,7 +217,7 @@ namespace OSHttpServer
{
get
{
return _items.ContainsKey(name) ? _items[name] : Empty;
return _items.TryGetValue(name, out HttpInputItem hii) ? hii : Empty;
}
}

View File

@@ -240,9 +240,8 @@ namespace OpenSim.Region.Framework.Scenes
if(state != null)
{
OSDMap s = (OSDMap)state;
if (s.ContainsKey("ViewerUiIsGod"))
newstate = s["ViewerUiIsGod"].AsBoolean();
if (s.TryGetValue("ViewerUiIsGod", out OSD tmp))
newstate = tmp.AsBoolean();
m_lastLevelToViewer = m_viewergodlevel; // we are not changing viewer level by default
}
UpdateGodLevels(newstate);

View File

@@ -833,9 +833,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
return Math.Tan(f);
}
public LSL_Float llAtan2(LSL_Float x, LSL_Float y)
public LSL_Float llAtan2(LSL_Float y, LSL_Float x)
{
return Math.Atan2(x, y);
return Math.Atan2(y, x);
}
public LSL_Float llSqrt(double f)

View File

@@ -43,7 +43,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
{
void state(string newState);
//ApiDesc Returns absolute version as val (ie as postive value)
LSL_Integer llAbs(LSL_Integer val);
//ApiDesc Returns cosine of val (val in radians)
LSL_Float llAcos(LSL_Float val);
//ApiDesc Sleep 0.1
void llAddToLandBanList(LSL_Key avatarId, LSL_Float hours);
@@ -55,8 +57,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
LSL_Float llAngleBetween(LSL_Rotation a, LSL_Rotation b);
void llApplyImpulse(LSL_Vector force, LSL_Integer local);
void llApplyRotationalImpulse(LSL_Vector force, int local);
//ApiDesc Returns sine of val (val in radians)
LSL_Float llAsin(LSL_Float val);
LSL_Float llAtan2(LSL_Float x, LSL_Float y);
//ApiDesc Returns the angle whose tangent is the y/x
LSL_Float llAtan2(LSL_Float y, LSL_Float x);
void llAttachToAvatar(LSL_Integer attachment);
void llAttachToAvatarTemp(LSL_Integer attachmentPoint);
LSL_Key llAvatarOnSitTarget();

View File

@@ -123,9 +123,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public LSL_Float llAtan2(LSL_Float x, LSL_Float y)
public LSL_Float llAtan2(LSL_Float y, LSL_Float x)
{
return m_LSL_Functions.llAtan2(x, y);
return m_LSL_Functions.llAtan2(y, x);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]

View File

@@ -101,9 +101,7 @@ namespace OpenSim.Server
ServicePointManager.Expect100Continue = false;
ServicePointManager.UseNagleAlgorithm = false;
ServicePointManager.ServerCertificateValidationCallback = ValidateServerCertificate;
WebUtil.SetupHTTPClients(m_NoVerifyCertChain, m_NoVerifyCertHostname, null, 32);
m_Server = new HttpServerBase("R.O.B.U.S.T.", args);
string registryLocation;
@@ -121,6 +119,7 @@ namespace OpenSim.Server
m_NoVerifyCertChain = serverConfig.GetBoolean("NoVerifyCertChain", m_NoVerifyCertChain);
m_NoVerifyCertHostname = serverConfig.GetBoolean("NoVerifyCertHostname", m_NoVerifyCertHostname);
WebUtil.SetupHTTPClients(m_NoVerifyCertChain, m_NoVerifyCertHostname, null, 32);
string connList = serverConfig.GetString("ServiceConnectors", string.Empty);

View File

@@ -28,8 +28,17 @@ To run OpenSim from a command prompt
# Running OpenSim on Linux/Mac
You will need dotnet 6.0 runtime for linux or Mac (https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
You will need
* [dotnet 6.0 Runtime](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
* libgdiplus
if you have mono 6.x complete, you already have libgdiplus, otherwise you need to install it
using a package manager for your operating system, like apt, brew, macports, etc
for example on debian:
`apt-get update && apt-get install -y apt-utils libgdiplus libc6-dev`
To run OpenSim, from the unpacked distribution type:
* cd bin

View File

@@ -799,21 +799,21 @@ namespace Amib.Threading
/// </summary>
public void Shutdown()
{
Shutdown(true, 0);
Shutdown(0);
}
/// <summary>
/// Force the SmartThreadPool to shutdown with timeout
/// </summary>
public void Shutdown(bool forceAbort, TimeSpan timeout)
public void Shutdown(TimeSpan timeout)
{
Shutdown(forceAbort, (int)timeout.TotalMilliseconds);
Shutdown((int)timeout.TotalMilliseconds);
}
/// <summary>
/// Empties the queue of work items and abort the threads in the pool.
/// </summary>
public void Shutdown(bool forceAbort, int millisecondsTimeout)
public void Shutdown(int millisecondsTimeout)
{
ValidateNotDisposed();
@@ -835,69 +835,41 @@ namespace Amib.Threading
int millisecondsLeft = millisecondsTimeout;
Stopwatch stopwatch = Stopwatch.StartNew();
//DateTime start = DateTime.UtcNow;
bool waitInfinitely = (Timeout.Infinite == millisecondsTimeout);
bool timeout = false;
// Each iteration we update the time left for the timeout.
foreach (ThreadEntry te in threadEntries)
if (millisecondsLeft >= Timeout.Infinite)
{
if (te is null)
continue;
Thread thread = te.WorkThread;
// Join don't work with negative numbers
if (!waitInfinitely && (millisecondsLeft < 0))
{
timeout = true;
break;
}
// Wait for the thread to terminate
bool success = thread.Join(millisecondsLeft);
if (!success)
{
timeout = true;
break;
}
if (!waitInfinitely)
{
// Update the time left to wait
//TimeSpan ts = DateTime.UtcNow - start;
millisecondsLeft = millisecondsTimeout - (int)stopwatch.ElapsedMilliseconds;
}
te.WorkThread = null;
}
if (timeout && forceAbort)
{
// Abort the threads in the pool
foreach (ThreadEntry te in threadEntries)
{
if (te is null)
continue;
Thread thread = te.WorkThread;
if (thread is not null && thread.IsAlive )
if(thread is null)
continue;
if (thread.IsAlive)
{
try
// Wait for the thread to terminate
_ = thread.Join(millisecondsLeft);
if (millisecondsLeft > 0)
{
//thread.Abort(); // Shutdown
te.WorkThread = null;
}
catch (SecurityException e)
{
e.GetHashCode();
}
catch (ThreadStateException ex)
{
ex.GetHashCode();
// In case the thread has been terminated
// after the check if it is alive.
// Update the time left to wait
millisecondsLeft = millisecondsTimeout - (int)stopwatch.ElapsedMilliseconds;
if (millisecondsLeft < 0)
millisecondsLeft= 0;
}
}
te.WorkThread = null;
}
}
else
{
// there is no Abort in dotnet > 5, so we can't do anything
foreach (ThreadEntry te in threadEntries)
{
if (te is null)
continue;
te.WorkThread = null;
}
}
}

Binary file not shown.