mirror of
https://github.com/opensim/opensim.git
synced 2026-05-13 01:46:07 +08:00
Compare commits
7 Commits
b713c3047e
...
r9db019b
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9db019b2cc | ||
|
|
f1b74cde60 | ||
|
|
d6fd012e65 | ||
|
|
64408c9395 | ||
|
|
5b2ca76fcb | ||
|
|
c6733b8c80 | ||
|
|
d068a68583 |
@@ -128,11 +128,10 @@ namespace OpenSim.Groups
|
||||
Dictionary<string, object> request =
|
||||
ServerUtils.ParseQueryString(body);
|
||||
|
||||
if (!request.ContainsKey("METHOD"))
|
||||
if(!request.Remove("METHOD", out object omethod))
|
||||
return FailureResult();
|
||||
|
||||
string method = request["METHOD"].ToString();
|
||||
request.Remove("METHOD");
|
||||
string method = omethod.ToString();
|
||||
|
||||
m_log.DebugFormat("[Groups.RobustHGConnector]: {0}", method);
|
||||
switch (method)
|
||||
|
||||
@@ -102,14 +102,16 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
{
|
||||
IConfig sconfig = config.Configs["Startup"];
|
||||
if (sconfig is not null)
|
||||
ConfigOptions.levelUpload = sconfig.GetInt("LevelUpload", 0);
|
||||
ConfigOptions.levelUpload = sconfig.GetInt("LevelUpload", -9798);
|
||||
|
||||
if (ConfigOptions.levelUpload == 0)
|
||||
if (ConfigOptions.levelUpload == -9798)
|
||||
{
|
||||
IConfig pconfig = config.Configs["Permissions"];
|
||||
if (pconfig is not null)
|
||||
ConfigOptions.levelUpload = pconfig.GetInt("LevelUpload", 0);
|
||||
}
|
||||
if (ConfigOptions.levelUpload == -9798)
|
||||
ConfigOptions.levelUpload = 0;
|
||||
|
||||
IConfig appearanceConfig = config.Configs["Appearance"];
|
||||
if (appearanceConfig is not null)
|
||||
|
||||
@@ -305,11 +305,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
{
|
||||
lock(dropedResponses)
|
||||
{
|
||||
if(dropedResponses.Contains(requestID))
|
||||
{
|
||||
dropedResponses.Remove(requestID);
|
||||
if(dropedResponses.Remove(requestID))
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -321,9 +318,8 @@ namespace OpenSim.Region.ClientStack.Linden
|
||||
{
|
||||
lock(dropedResponses)
|
||||
{
|
||||
if(dropedResponses.Contains(requestID))
|
||||
if(dropedResponses.Remove(requestID))
|
||||
{
|
||||
dropedResponses.Remove(requestID);
|
||||
ProcessedRequestsCount++;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ using OpenMetaverse;
|
||||
using OpenMetaverse.Packets;
|
||||
using log4net;
|
||||
using OpenSim.Framework.Monitoring;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
{
|
||||
@@ -114,29 +115,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
public Packet GetPacket(PacketType type)
|
||||
{
|
||||
PacketsRequested++;
|
||||
|
||||
Packet packet;
|
||||
|
||||
if (!RecyclePackets)
|
||||
return Packet.BuildPacket(type);
|
||||
|
||||
Packet packet;
|
||||
lock (pool)
|
||||
{
|
||||
if (!pool.ContainsKey(type) || pool[type] == null || (pool[type]).Count == 0)
|
||||
if (!pool.TryGetValue(type, out Stack<Packet> typePacketsStack) || typePacketsStack == null || typePacketsStack.Count == 0)
|
||||
{
|
||||
// m_log.DebugFormat("[PACKETPOOL]: Building {0} packet", type);
|
||||
|
||||
// Creating a new packet if we cannot reuse an old package
|
||||
//m_log.DebugFormat("[PACKETPOOL]: Building {0} packet", type);
|
||||
packet = Packet.BuildPacket(type);
|
||||
}
|
||||
else
|
||||
{
|
||||
// m_log.DebugFormat("[PACKETPOOL]: Pulling {0} packet", type);
|
||||
//m_log.DebugFormat("[PACKETPOOL]: Pulling {0} packet", type);
|
||||
|
||||
// Recycle old packages
|
||||
PacketsReused++;
|
||||
|
||||
packet = pool[type].Pop();
|
||||
packet = typePacketsStack.Pop();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -199,7 +195,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
if (!RecyclePackets)
|
||||
return;
|
||||
|
||||
bool trypool = false;
|
||||
PacketType type = packet.Type;
|
||||
|
||||
switch (type)
|
||||
@@ -207,83 +202,33 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||
case PacketType.ObjectUpdate:
|
||||
ObjectUpdatePacket oup = (ObjectUpdatePacket)packet;
|
||||
oup.ObjectData = null;
|
||||
trypool = true;
|
||||
break;
|
||||
|
||||
case PacketType.ImprovedTerseObjectUpdate:
|
||||
ImprovedTerseObjectUpdatePacket itoup = (ImprovedTerseObjectUpdatePacket)packet;
|
||||
itoup.ObjectData = null;
|
||||
trypool = true;
|
||||
break;
|
||||
|
||||
case PacketType.PacketAck:
|
||||
PacketAckPacket ackup = (PacketAckPacket)packet;
|
||||
ackup.Packets = null;
|
||||
trypool = true;
|
||||
break;
|
||||
|
||||
case PacketType.AgentUpdate:
|
||||
trypool = true;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if(!trypool)
|
||||
return;
|
||||
|
||||
lock (pool)
|
||||
{
|
||||
if (!pool.ContainsKey(type))
|
||||
ref Stack<Packet> spkt = ref CollectionsMarshal.GetValueRefOrAddDefault(pool, type, out bool exists);
|
||||
if (exists && spkt.Count < 50)
|
||||
{
|
||||
pool[type] = new Stack<Packet>();
|
||||
spkt.Push(packet);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((pool[type]).Count < 50)
|
||||
{
|
||||
// m_log.DebugFormat("[PACKETPOOL]: Pushing {0} packet", type);
|
||||
pool[type].Push(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public T GetDataBlock<T>() where T: new()
|
||||
{
|
||||
lock (DataBlocks)
|
||||
{
|
||||
BlocksRequested++;
|
||||
|
||||
Stack<Object> s;
|
||||
|
||||
if (DataBlocks.TryGetValue(typeof(T), out s))
|
||||
{
|
||||
if (s.Count > 0)
|
||||
{
|
||||
BlocksReused++;
|
||||
return (T)s.Pop();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DataBlocks[typeof(T)] = new Stack<Object>();
|
||||
}
|
||||
|
||||
return new T();
|
||||
}
|
||||
}
|
||||
|
||||
public void ReturnDataBlock<T>(T block) where T: new()
|
||||
{
|
||||
if (block == null)
|
||||
return;
|
||||
|
||||
lock (DataBlocks)
|
||||
{
|
||||
if (!DataBlocks.ContainsKey(typeof(T)))
|
||||
DataBlocks[typeof(T)] = new Stack<Object>();
|
||||
|
||||
if (DataBlocks[typeof(T)].Count < 50)
|
||||
DataBlocks[typeof(T)].Push(block);
|
||||
spkt = new Stack<Packet>();
|
||||
spkt.Push(packet);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,17 +51,27 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
|
||||
/// <summary>
|
||||
/// Each agent has its own singleton collection of transactions
|
||||
/// </summary>
|
||||
private Dictionary<UUID, AgentAssetTransactions> AgentTransactions =
|
||||
new Dictionary<UUID, AgentAssetTransactions>();
|
||||
private Dictionary<UUID, AgentAssetTransactions> AgentTransactions = [];
|
||||
|
||||
#region Region Module interface
|
||||
|
||||
public void Initialise(IConfigSource source)
|
||||
{
|
||||
IConfig sconfig = source.Configs["Startup"];
|
||||
if (sconfig != null)
|
||||
if(source != null)
|
||||
{
|
||||
m_levelUpload = sconfig.GetInt("LevelUpload", 0);
|
||||
IConfig sconfig = source.Configs["Permissions"];
|
||||
if (sconfig != null)
|
||||
{
|
||||
m_levelUpload = sconfig.GetInt("LevelUpload", -9798);
|
||||
}
|
||||
if(m_levelUpload == -9798)
|
||||
{
|
||||
sconfig = source.Configs["Startup"];
|
||||
if (sconfig is not null)
|
||||
m_levelUpload = sconfig.GetInt("LevelUpload", 0);
|
||||
}
|
||||
if(m_levelUpload == -9798)
|
||||
m_levelUpload = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -994,7 +994,8 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
try
|
||||
{
|
||||
// If the file is already cached, don't cache it, just touch it so access time is updated
|
||||
if (!replace && File.Exists(filename))
|
||||
bool fileExists = File.Exists(filename);
|
||||
if (!replace && fileExists)
|
||||
{
|
||||
if (m_updateFileTimeOnCacheHit)
|
||||
UpdateFileLastAccessTime(filename);
|
||||
@@ -1031,7 +1032,7 @@ namespace OpenSim.Region.CoreModules.Asset
|
||||
|
||||
try
|
||||
{
|
||||
if(replace)
|
||||
if(fileExists)
|
||||
File.Delete(filename);
|
||||
File.Move(tempname, filename);
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Xml;
|
||||
@@ -147,15 +148,14 @@ namespace OpenSim.Region.DataSnapshot
|
||||
#region Response storage
|
||||
public XmlNode GetScene(Scene scene, XmlDocument factory)
|
||||
{
|
||||
m_log.Debug("[DATASNAPSHOT]: Data requested for scene " + scene.RegionInfo.RegionName);
|
||||
m_log.Debug("[DATASNAPSHOT]: Data requested for scene " + scene.Name);
|
||||
|
||||
if (!m_scenes.ContainsKey(scene)) {
|
||||
m_scenes.Add(scene, true); //stale by default
|
||||
}
|
||||
ref bool sceneStale = ref CollectionsMarshal.GetValueRefOrAddDefault(m_scenes, scene, out bool exists);
|
||||
sceneStale |= !exists;
|
||||
|
||||
XmlNode regionElement = null;
|
||||
|
||||
if (!m_scenes[scene])
|
||||
if (!sceneStale)
|
||||
{
|
||||
m_log.Debug("[DATASNAPSHOT]: Attempting to retrieve snapshot from cache.");
|
||||
//get snapshot from cache
|
||||
@@ -212,7 +212,7 @@ namespace OpenSim.Region.DataSnapshot
|
||||
m_log.WarnFormat("[DATASNAPSHOT]: Exception on writing to file {0}: {1}", path, e.Message);
|
||||
}
|
||||
|
||||
m_scenes[scene] = false;
|
||||
sceneStale = false;
|
||||
|
||||
m_log.Debug("[DATASNAPSHOT]: Generated new snapshot for " + scene.RegionInfo.RegionName);
|
||||
}
|
||||
@@ -258,7 +258,6 @@ namespace OpenSim.Region.DataSnapshot
|
||||
//attr.Value = scene.LandManager.landList.Count.ToString();
|
||||
//docElement.Attributes.Append(attr);
|
||||
|
||||
|
||||
XmlNode infoblock = basedoc.CreateNode(XmlNodeType.Element, "info", "");
|
||||
|
||||
XmlNode infopiece = basedoc.CreateNode(XmlNodeType.Element, "uuid", "");
|
||||
|
||||
@@ -2942,7 +2942,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
if(obj is OTOpndBinOp)
|
||||
sb.Append(')');
|
||||
sb.Append('.');
|
||||
sb.Append(field.Name);
|
||||
sb.Append(this.field.Name);
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
@@ -3548,9 +3548,9 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
{
|
||||
get
|
||||
{
|
||||
if(field.DeclaringType == typeof(ScriptBaseClass))
|
||||
return field.Name;
|
||||
return field.DeclaringType.Name + "." + field.Name;
|
||||
if(this.field.DeclaringType == typeof(ScriptBaseClass))
|
||||
return this.field.Name;
|
||||
return this.field.DeclaringType.Name + "." + this.field.Name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -450,9 +450,11 @@ namespace OpenSim.Services.LLLoginService
|
||||
//
|
||||
// Authenticate this user
|
||||
//
|
||||
if (!passwd.StartsWith("$1$"))
|
||||
passwd = "$1$" + Util.Md5Hash(passwd);
|
||||
passwd = passwd.Remove(0, 3); //remove $1$
|
||||
if (passwd.StartsWith("$1$"))
|
||||
passwd = passwd[3..];
|
||||
else
|
||||
passwd = Util.Md5Hash(passwd);
|
||||
|
||||
string token = m_AuthenticationService.Authenticate(account.PrincipalID, passwd, 30, out UUID realID);
|
||||
UUID secureSession = UUID.Zero;
|
||||
if (string.IsNullOrWhiteSpace(token) || !UUID.TryParse(token, out secureSession))
|
||||
|
||||
Reference in New Issue
Block a user