Compare commits

...

12 Commits

Author SHA1 Message Date
UbitUmarov
effb5784c1 a few changes on assets store and exists return 2026-06-19 22:47:12 +01:00
UbitUmarov
7130e30483 increase asset store web timeout to 30s again 2026-06-19 21:39:58 +01:00
UbitUmarov
ecdcaca032 cosmetics 2026-06-19 01:41:02 +01:00
UbitUmarov
2720a1db36 change the rebakes throotle code 2026-06-16 21:56:11 +01:00
UbitUmarov
60a32d28e4 add AddOrUpdate to ExpiringKey 2026-06-16 21:41:15 +01:00
Ubit Umarov
8a95a4dfe0 Merge pull request #41 from holoneon/patch-3
Update AvatarFactoryModule.cs
2026-06-16 20:54:32 +01:00
UbitUmarov
282db7dd1e update libomv 2026-06-16 19:09:47 +01:00
Fiona Sweet
dae81f7bf5 Update AvatarFactoryModule.cs
in logs i have noticed thousands of 'rebake' requests happening extremely rapidly from a few hg visitors, (for example yesterday 2400 from one hg visitor in 3 minutes) a potential denial of service vector. this adds throttling limit 1 per 30 seconds.  please review
2026-06-15 12:53:52 -07:00
UbitUmarov
29889f481a cosmetics 2026-06-12 12:12:24 +01:00
Vincent Sylvester
2494f23538 Postgres fixes for uuid type handling
Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
2026-06-12 11:35:40 +01:00
Ubit Umarov
cf8778f50f Merge pull request #36 from Tampa/webrtc-fix
Fix response for vivox server type under webrtc
2026-06-06 15:17:17 +01:00
Vincent Sylvester
a61b946563 Do not respond to vivox under webrtc 2026-06-04 23:48:20 +02:00
36 changed files with 162 additions and 169 deletions

View File

@@ -417,7 +417,7 @@ namespace osWebRtcVoice
m_log.Warn($"{LogHeader}[ProvisionVoice]: Request detail: {map}");
response.RawBuffer = llsdUndefAnswerBytes;
response.StatusCode = (int)HttpStatusCode.OK;
response.StatusCode = 0;
return;
}
}

View File

@@ -253,7 +253,7 @@ namespace OpenSim.Data.MySQL
public override bool[] AssetsExist(UUID[] uuids)
{
if (uuids.Length == 0)
return new bool[0];
return [];
HashSet<UUID> exist = new HashSet<UUID>();

View File

@@ -401,7 +401,7 @@ namespace OpenSim.Data.MySQL
public bool[] AssetsExist(UUID[] uuids)
{
if (uuids.Length == 0)
return new bool[0];
return [];
HashSet<UUID> exists = new HashSet<UUID>();

View File

@@ -239,7 +239,7 @@ namespace OpenSim.Data.PGSQL
public override bool[] AssetsExist(UUID[] uuids)
{
if (uuids.Length == 0)
return new bool[0];
return [];
HashSet<UUID> exist = new HashSet<UUID>();

View File

@@ -352,12 +352,12 @@ namespace OpenSim.Data.PGSQL
//Insert after
cmd.CommandText = "insert into estateban (\"EstateID\", \"bannedUUID\",\"bannedIp\", \"bannedIpHostMask\", \"bannedNameMask\", \"banningUUID\",\"banTime\" ) values ( :EstateID, :bannedUUID, '','','', :banningUUID, :banTime )";
cmd.Parameters.AddWithValue("bannedUUID", Guid.Empty);
foreach (EstateBan b in es.EstateBans)
{
cmd.Parameters.Clear();
cmd.Parameters["EstateID"].Value = b.EstateID;
cmd.Parameters["bannedUUID"].Value = b.BannedUserID.Guid;
cmd.Parameters["banningUUID"].Value = b.BanningUserID.Guid;
cmd.Parameters["bannedUUID"].Value = _Database.CreateParameter("bannedUUID", b.BannedUserID).Value;
cmd.Parameters["banningUUID"].Value = _Database.CreateParameter("banningUUID", b.BanningUserID).Value;
cmd.Parameters["banTime"].Value = b.BanTime;
cmd.ExecuteNonQuery();
@@ -378,10 +378,10 @@ namespace OpenSim.Data.PGSQL
cmd.ExecuteNonQuery();
cmd.CommandText = string.Format("insert into {0} (\"EstateID\", uuid) values ( :EstateID, :uuid )", table);
cmd.Parameters.AddWithValue("uuid", Guid.Empty);
foreach (UUID uuid in data)
{
cmd.Parameters["uuid"].Value = uuid.Guid; //.ToString(); //TODO check if this works
cmd.Parameters.Clear();
cmd.Parameters.Add(_Database.CreateParameter("uuid", uuid));
cmd.ExecuteNonQuery();
}
}

View File

@@ -134,10 +134,13 @@ namespace OpenSim.Data.PGSQL
foreach (DataRow row in schemaTable.Rows)
{
if (row["ColumnName"] != null &&
(!m_Fields.ContainsKey(row["ColumnName"].ToString())))
m_ColumnNames.Add(row["ColumnName"].ToString());
if (row["ColumnName"] == null)
continue;
string col = row["ColumnName"].ToString();
if (!m_Fields.ContainsKey(col))
m_ColumnNames.Add(col);
}
}

View File

@@ -171,7 +171,7 @@ namespace OpenSim.Data.PGSQL
{
// cmd.CommandText = String.Format(@"select * from inventoryitems where ""avatarID"" = :uuid and ""assetType"" = :type and ""flags"" = 1", m_Realm);
cmd.CommandText = "select * from inventoryitems where avatarID = :uuid and assetType = :type and flags = 1";
cmd.CommandText = "select * from inventoryitems where \"avatarID\" = :uuid and \"assetType\" = :type and \"flags\" = 1";
cmd.Parameters.Add(m_database.CreateParameter("uuid", principalID));
cmd.Parameters.Add(m_database.CreateParameter("type", (int)AssetType.Gesture));

View File

@@ -147,7 +147,8 @@ namespace OpenSim.Data.SQLite
}
//m_log.Info("[ASSET DB]: Creating Asset " + asset.FullID.ToString());
if (AssetsExist(new[] { asset.FullID })[0])
bool[] assetsExist = AssetsExist([ asset.FullID ]);
if (assetsExist.Length > 0 && assetsExist[0])
{
//LogAssetLoad(asset);
@@ -218,7 +219,7 @@ namespace OpenSim.Data.SQLite
public override bool[] AssetsExist(UUID[] uuids)
{
if (uuids.Length == 0)
return new bool[0];
return [];
HashSet<UUID> exist = new HashSet<UUID>();

View File

@@ -916,18 +916,17 @@ namespace OpenSim.Framework
{
// Wearables
OSD tmpOSD8;
OSDArray wears8 = null;
int wears8Count = 0;
if (data.TryGetValue("wrbls8", out tmpOSD8) && (tmpOSD8 is OSDArray))
if (data.TryGetValue("wrbls8", out tmpOSD8) && (tmpOSD8 is OSDArray wears8))
{
wears8 = (OSDArray)tmpOSD8;
wears8Count = wears8.Count;
}
else
wears8 = null;
if (data.TryGetValue("wearables", out tmpOSD) && (tmpOSD is OSDArray))
if (data.TryGetValue("wearables", out tmpOSD) && (tmpOSD is OSDArray wears))
{
OSDArray wears = (OSDArray)tmpOSD;
if(wears.Count + wears8Count > 0)
{
m_wearables = new AvatarWearable[wears.Count + wears8Count];
@@ -948,9 +947,8 @@ namespace OpenSim.Framework
Primitive.TextureEntry te = new Primitive.TextureEntry(teb, 0, teb.Length);
m_texture = te;
}
else if (data.TryGetValue("textures", out tmpOSD) && (tmpOSD is OSDArray))
else if (data.TryGetValue("textures", out tmpOSD) && (tmpOSD is OSDArray textures))
{
OSDArray textures = (OSDArray)tmpOSD;
for (int i = 0; i < textures.Count && i < TEXTURE_COUNT_PV7; ++i)
{
tmpOSD = textures[i];
@@ -959,26 +957,12 @@ namespace OpenSim.Framework
}
}
if (data.TryGetValue("bakedcache", out tmpOSD) && (tmpOSD is OSDArray))
if (data.TryGetValue("bakedcache", out tmpOSD) && (tmpOSD is OSDArray bakedOSDArray))
{
OSDArray bakedOSDArray = (OSDArray)tmpOSD;
m_cacheitems = WearableCacheItem.GetDefaultCacheItem();
bakedOSDArray = (OSDArray)tmpOSD;
foreach (OSDMap item in bakedOSDArray)
foreach (OSD oitem in bakedOSDArray)
{
int idx = item["textureindex"].AsInteger();
if (idx < 0 || idx >= m_cacheitems.Length)
continue;
m_cacheitems[idx].CacheId = item["cacheid"].AsUUID();
m_cacheitems[idx].TextureID = item["textureid"].AsUUID();
m_cacheitems[idx].TextureAsset = null;
}
if (data.TryGetValue("bc8", out tmpOSD) && (tmpOSD is OSDArray))
{
bakedOSDArray = (OSDArray)tmpOSD;
foreach (OSDMap item in bakedOSDArray)
if(oitem is OSDMap item)
{
int idx = item["textureindex"].AsInteger();
if (idx < 0 || idx >= m_cacheitems.Length)
@@ -988,6 +972,22 @@ namespace OpenSim.Framework
m_cacheitems[idx].TextureAsset = null;
}
}
if (data.TryGetValue("bc8", out tmpOSD) && (tmpOSD is OSDArray))
{
foreach (OSD oitem in bakedOSDArray)
{
if(oitem is OSDMap item)
{
int idx = item["textureindex"].AsInteger();
if (idx < 0 || idx >= m_cacheitems.Length)
continue;
m_cacheitems[idx].CacheId = item["cacheid"].AsUUID();
m_cacheitems[idx].TextureID = item["textureid"].AsUUID();
m_cacheitems[idx].TextureAsset = null;
}
}
}
}
// Visual Parameters
@@ -1002,9 +1002,8 @@ namespace OpenSim.Framework
}
// Attachments
if (data.TryGetValue("attachments", out tmpOSD) && tmpOSD is OSDArray)
if (data.TryGetValue("attachments", out tmpOSD) && tmpOSD is OSDArray attachs)
{
OSDArray attachs = (OSDArray)tmpOSD;
for (int i = 0; i < attachs.Count; i++)
{
AvatarAttachment att = new AvatarAttachment((OSDMap)attachs[i]);

View File

@@ -28,6 +28,7 @@ using System;
using System.Threading;
using System.Collections.Generic;
using Timer = System.Threading.Timer ;
using System.Runtime.InteropServices;
namespace OpenSim.Framework
{
@@ -168,6 +169,28 @@ namespace OpenSim.Framework
finally { m_rwLock.ExitWriteLock(); }
}
public bool AddOrUpdate(Tkey1 key, int expireMS)
{
int now;
if (expireMS > 0)
{
expireMS = (expireMS > m_expire) ? expireMS : m_expire;
now = (int)(Util.GetTimeStampMS() - m_startTS) + expireMS;
}
else
now = int.MinValue;
m_rwLock.EnterWriteLock();
try
{
ref int entry = ref CollectionsMarshal.GetValueRefOrAddDefault(m_dictionary, key, out bool exists);
entry = now;
CheckTimer();
return exists;
}
finally { m_rwLock.ExitWriteLock(); }
}
public bool Remove(Tkey1 key)
{
m_rwLock.EnterWriteLock();

View File

@@ -81,8 +81,7 @@ namespace OpenSim.Framework
public Lazy(Func<T> valueFactory, LazyThreadSafetyMode mode)
{
if (valueFactory == null)
throw new ArgumentNullException("valueFactory");
ArgumentNullException.ThrowIfNull(valueFactory);
this.factory = valueFactory;
if (mode != LazyThreadSafetyMode.None)
monitor = new object();

View File

@@ -212,6 +212,7 @@ namespace OpenSim.Framework.Servers.HttpServer
{
set { m_certificateValidationCallback = value; }
}
private static readonly char[] LineSeparators = ['\n','\r'];
private void load_cert(string CPath, string CPass)
{
@@ -223,13 +224,13 @@ namespace OpenSim.Framework.Servers.HttpServer
{
AsnEncodedData asndata = new AsnEncodedData(ext.Oid, ext.RawData);
string datastr = asndata.Format(true);
string[] lines = datastr.Split(new char[] {'\n','\r'});
string[] lines = datastr.Split(LineSeparators);
foreach(string s in lines)
{
if(String.IsNullOrEmpty(s))
if(string.IsNullOrEmpty(s))
continue;
string[] parts = s.Split(new char[] {'='});
if(String.IsNullOrEmpty(parts[0]))
string[] parts = s.Split('=');
if(string.IsNullOrEmpty(parts[0]))
continue;
string entryName = parts[0].Replace(" ","");
if(entryName == "DNSName")
@@ -1015,8 +1016,7 @@ namespace OpenSim.Framework.Servers.HttpServer
}
finally
{
if (innerStream != null)
innerStream.Dispose();
innerStream?.Dispose();
inputStream.Dispose();
}
}

View File

@@ -22,7 +22,7 @@ namespace OSHttpServer
public RequestCookie(string id, string content)
{
if (string.IsNullOrEmpty(id)) throw new ArgumentNullException("id");
if (content == null) throw new ArgumentNullException("content");
ArgumentNullException.ThrowIfNull(content);
_name = id;
_value = content;

View File

@@ -79,8 +79,10 @@ namespace OpenSim.Framework.Servers.HttpServer
using (MemoryStream buffer = new MemoryStream())
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
XmlWriterSettings settings = new()
{
Encoding = Encoding.UTF8
};
using (XmlWriter writer = XmlWriter.Create(buffer, settings))
{
@@ -134,8 +136,7 @@ namespace OpenSim.Framework.Servers.HttpServer
using (MemoryStream buffer = new MemoryStream())
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
XmlWriterSettings settings = new() { Encoding = Encoding.UTF8 };
using (XmlWriter writer = XmlWriter.Create(buffer, settings))
{
@@ -169,8 +170,7 @@ namespace OpenSim.Framework.Servers.HttpServer
// m_log.DebugFormat("[REST OBJECT POSTER RESPONSE]: Received {0}", reader.ReadToEnd());
deserial = (TResponse)deserializer.Deserialize(stream);
if (stream != null)
stream.Close();
stream?.Close();
if (deserial != null && ResponseCallback != null)
{

View File

@@ -1009,8 +1009,7 @@ namespace OpenSim.Framework
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUrl);
if (auth != null)
auth.AddAuthorization(request.Headers);
auth?.AddAuthorization(request.Headers);
request.AllowWriteStreamBuffering = false;

View File

@@ -1535,10 +1535,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
catch (Exception ex)
{
m_log.Error($"Packet statistics gathering failed: {ex.Message}");
if (PacketLog.Log != null)
{
PacketLog.Log.Close();
}
PacketLog?.Log?.Close();
PacketLog = null;
}
}

View File

@@ -226,8 +226,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
// Pass the new values up to the parent
if (m_parent != null)
m_parent.RegisterRequest(this, Math.Min(RequestedDripRate, TotalDripRequest));
m_parent?.RegisterRequest(this, Math.Min(RequestedDripRate, TotalDripRequest));
}
/// <summary>
@@ -246,8 +245,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
// Pass the new values up to the parent
if (Parent != null)
Parent.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest));
Parent?.RegisterRequest(this,Math.Min(RequestedDripRate, TotalDripRequest));
}
/// <summary>
@@ -351,8 +349,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
{
m_dripRate = Math.Clamp(value, m_minimumFlow, MaxDripRate);
if (m_parent != null)
m_parent.RegisterRequest(this, m_dripRate);
m_parent?.RegisterRequest(this, m_dripRate);
}
}
@@ -371,8 +368,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
m_dripRate = m_maxDripRate * .5f;
else
m_dripRate = m_maxDripRate;
if (m_parent != null)
m_parent.RegisterRequest(this, m_dripRate);
m_parent?.RegisterRequest(this, m_dripRate);
}
/// <summary>
@@ -392,7 +388,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
public void AcknowledgePackets(Int32 count)
{
if (m_enabled)
AdjustedDripRate = AdjustedDripRate + count;
AdjustedDripRate += count;
}
}
}

View File

@@ -67,6 +67,10 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
private object m_setAppearanceLock = new object();
// add throttle
private const int REBAKE_THROTTLE_SECONDS = 30;
readonly ExpiringKey<string> m_rebakeThrottle = new(500 * REBAKE_THROTTLE_SECONDS);
#region Region Module interface
public void Initialise(IConfigSource config)
@@ -451,10 +455,21 @@ namespace OpenSim.Region.CoreModules.Avatar.AvatarFactory
sp.Appearance.WearableCacheItems = wearableCache;
// throttle rebake requests
if (missing.Count > 0)
{
string spuuidstr = sp.UUID.ToString();
foreach (UUID id in missing)
{
string key = spuuidstr + id.ToString();
if(m_rebakeThrottle.AddOrUpdate(key, 1000 * REBAKE_THROTTLE_SECONDS))
continue;
m_log.Debug($"[AVFACTORY]: Missing baked texture {id} for {sp.Name}, requesting rebake");
sp.ControllingClient.SendRebakeAvatarTextures(id);
}
}
bool changed = false;

View File

@@ -314,8 +314,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
public string Store(AssetBase asset)
{
if (m_Cache != null)
m_Cache.Cache(asset);
m_Cache?.Cache(asset);
if (asset.Local)
{

View File

@@ -512,7 +512,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
return m_localConnector.AssetsExist(ids);
else if (m_HGConnector != null)
return m_HGConnector.AssetsExist(ids);
return null;
return [];
}
public string Store(AssetBase asset)
@@ -524,12 +524,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
return null;
id = StoreForeign(asset);
if (m_Cache != null)
{
if (!string.IsNullOrEmpty(id) && !id.Equals(UUID.ZeroString))
m_Cache.Cache(asset);
if (!string.IsNullOrEmpty(id) && !id.Equals(UUID.ZeroString))
{
m_Cache?.Cache(asset);
return id;
}
return id;
else
return string.Empty;
}
if (m_Cache != null)
@@ -541,10 +542,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
id = StoreLocal(asset);
if (string.IsNullOrEmpty(id))
return string.Empty;
return id;
return string.IsNullOrEmpty(id) || id.Equals(UUID.ZeroString) ? string.Empty : id;
}
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]

View File

@@ -2117,7 +2117,7 @@ namespace OpenSim.Region.CoreModules.World.Land
{
// if you do a "About Landmark" on a landmark a second time, the viewer sends the
// region_handle it got earlier via RegionHandleRequest
ulong regionHandle = Util.BytesToUInt64Big((byte[])tmp);
ulong regionHandle = tmp.AsULong();
if(regionHandle == myHandle)
{
ILandObject l = GetLandObjectClippedXY(x, y);

View File

@@ -105,11 +105,9 @@ namespace OpenSim.Region.CoreModules
}
// Check for desired plugin
if (m_availableWindPlugins.ContainsKey(m_dWindPluginName))
if (m_availableWindPlugins.TryGetValue(m_dWindPluginName, out m_activeWindPlugin))
{
m_activeWindPlugin = m_availableWindPlugins[m_dWindPluginName];
m_log.InfoFormat("[WIND] {0} plugin found, initializing.", m_dWindPluginName);
m_log.InfoFormat("[WIND] {0} plugin found, initializing.", m_dWindPluginName);
if (m_windConfig != null)
{

View File

@@ -451,7 +451,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
assetStrings[k], existChecks[k] ? "yes" : "no");
sb.Append(cdt.ToString());
sb.Append("\n");
sb.Append('\n');
}
}
else

View File

@@ -123,8 +123,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
if (!m_Enabled)
return;
if(m_odeScene != null)
m_odeScene.RegionLoaded();
m_odeScene?.RegionLoaded();
}
#endregion

View File

@@ -75,8 +75,8 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
private bool doConvexPrims = true;
private bool doConvexSculpts = true;
private readonly Dictionary<AMeshKey, Mesh> m_uniqueMeshes = new();
private readonly Dictionary<AMeshKey, Mesh> m_uniqueReleasedMeshes = new ();
private readonly Dictionary<AMeshKey, Mesh> m_uniqueMeshes = [];
private readonly Dictionary<AMeshKey, Mesh> m_uniqueReleasedMeshes = [];
#region INonSharedRegionModule
public string Name
@@ -173,7 +173,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
/// <param name="size">Size of entire object</param>
/// <param name="coords"></param>
/// <param name="faces"></param>
private unsafe void AddSubMesh(OSDMap subMeshData, List<Vector3> coords, List<Face> faces)
private unsafe void AddSubMesh(OSDMap subMeshData, List<Vector3> coords, List<Face> faces)
{
// Console.WriteLine("subMeshMap for {0} - {1}", primName, Util.GetFormattedXml((OSD)subMeshMap));
@@ -209,7 +209,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
int faceIndexOffset = coords.Count;
fixed (byte* ptrstart = posBytes)
{
{
byte* end = ptrstart + posBytes.Length;
byte* ptr = ptrstart;
while (ptr < end)
@@ -1331,8 +1331,7 @@ namespace OpenSim.Region.PhysicsModule.ubODEMeshing
}
finally
{
if(stream != null)
stream.Dispose();
stream?.Dispose();
}
if (!ok && File.Exists(filename))

View File

@@ -96,7 +96,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
private const int SCRIPTED = 8;
private readonly float maximumRange = 96.0f;
private readonly int maximumToReturn = 16;
private readonly int maximumToReturn = 32;
//
// Sensed entity

View File

@@ -43,6 +43,7 @@ using GridRegion = OpenSim.Services.Interfaces.GridRegion;
using OpenSim.Framework;
using OpenSim.Framework.Servers.HttpServer;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
namespace OpenSim.Server.Handlers.Hypergrid
{
@@ -80,13 +81,13 @@ namespace OpenSim.Server.Handlers.Hypergrid
try
{
Dictionary<string, object> request =
ServerUtils.ParseQueryString(body);
Dictionary<string, object> request = ServerUtils.ParseQueryString(body);
if (!request.ContainsKey("METHOD"))
object tmpObj;
if (!request.TryGetValue("METHOD", out tmpObj))
return FailureResult();
string method = request["METHOD"].ToString();
string method = tmpObj.ToString();
switch (method)
{
@@ -140,19 +141,14 @@ namespace OpenSim.Server.Handlers.Hypergrid
if (!VerifyServiceKey(request))
return FailureResult();
UUID principalID = UUID.Zero;
if (request.ContainsKey("PRINCIPALID"))
UUID.TryParse(request["PRINCIPALID"].ToString(), out principalID);
else
object tmpObj;
if (!request.TryGetValue("PRINCIPALID", out tmpObj) || !UUID.TryParse(tmpObj.ToString(), out UUID principalID))
{
m_log.WarnFormat("[HGFRIENDS HANDLER]: no principalID in request to get friend perms");
return FailureResult();
}
UUID friendID = UUID.Zero;
if (request.ContainsKey("FRIENDID"))
UUID.TryParse(request["FRIENDID"].ToString(), out friendID);
else
if (!request.TryGetValue("FRIENDID", out tmpObj) || !UUID.TryParse(tmpObj.ToString(), out UUID friendID))
{
m_log.WarnFormat("[HGFRIENDS HANDLER]: no friendID in request to get friend perms");
return FailureResult();
@@ -181,14 +177,14 @@ namespace OpenSim.Server.Handlers.Hypergrid
byte[] DeleteFriendship(Dictionary<string, object> request)
{
FriendInfo friend = new FriendInfo(request);
string secret = string.Empty;
if (request.ContainsKey("SECRET"))
secret = request["SECRET"].ToString();
if (request.TryGetValue("SECRET", out object tmpObj) || tmpObj is null)
return BoolResult(false);
string secret = tmpObj.ToString();
if (secret.Length == 0)
return BoolResult(false);
FriendInfo friend = new FriendInfo(request);
bool success = m_TheService.DeleteFriendship(friend, secret);
return BoolResult(success);
@@ -196,27 +192,15 @@ namespace OpenSim.Server.Handlers.Hypergrid
byte[] FriendshipOffered(Dictionary<string, object> request)
{
UUID fromID = UUID.Zero;
UUID toID = UUID.Zero;
string message = string.Empty;
string name = string.Empty;
if (!request.ContainsKey("FromID") || !request.ContainsKey("ToID"))
if (!request.TryGetValue("FromID", out object FromIDobj) || !UUID.TryParse(FromIDobj.ToString(), out UUID fromID))
return BoolResult(false);
if (!request.TryGetValue("ToID", out object ToIDobj) || !UUID.TryParse(ToIDobj.ToString(), out UUID toID))
return BoolResult(false);
if (!UUID.TryParse(request["ToID"].ToString(), out toID))
return BoolResult(false);
message = request["Message"].ToString();
if (!UUID.TryParse(request["FromID"].ToString(), out fromID))
return BoolResult(false);
if (request.ContainsKey("FromName"))
name = request["FromName"].ToString();
string name = request.TryGetValue("FromName", out object FromNameobj) ? FromNameobj.ToString() : string.Empty;
string message = request.TryGetValue("Message", out object Messageobj) ? Messageobj.ToString() : string.Empty;
bool success = m_TheService.FriendshipOffered(fromID, name, toID, message);
return BoolResult(success);
}
@@ -234,9 +218,10 @@ namespace OpenSim.Server.Handlers.Hypergrid
byte[] StatusNotification(Dictionary<string, object> request)
{
object tmpObj;
UUID principalID = UUID.Zero;
if (request.ContainsKey("userID"))
UUID.TryParse(request["userID"].ToString(), out principalID);
if (request.TryGetValue("userID", out tmpObj))
UUID.TryParse(tmpObj.ToString(), out principalID);
else
{
m_log.WarnFormat("[HGFRIENDS HANDLER]: no userID in request to notify");
@@ -244,8 +229,8 @@ namespace OpenSim.Server.Handlers.Hypergrid
}
bool online = true;
if (request.ContainsKey("online"))
Boolean.TryParse(request["online"].ToString(), out online);
if (request.TryGetValue("online", out tmpObj))
bool.TryParse(tmpObj.ToString(), out online);
else
{
m_log.WarnFormat("[HGFRIENDS HANDLER]: no online in request to notify");
@@ -266,7 +251,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
List<UUID> onlineFriends = m_TheService.StatusNotification(friends, principalID, online);
Dictionary<string, object> result = new Dictionary<string, object>();
if ((onlineFriends == null) || ((onlineFriends != null) && (onlineFriends.Count == 0)))
if (onlineFriends == null || onlineFriends.Count == 0)
result["RESULT"] = "NULL";
else
{
@@ -290,20 +275,14 @@ namespace OpenSim.Server.Handlers.Hypergrid
private bool VerifyServiceKey(Dictionary<string, object> request)
{
if (!request.ContainsKey("KEY") || !request.ContainsKey("SESSIONID"))
if (!request.TryGetValue("KEY", out object KEYobj) || KEYobj is not string serviceKey || serviceKey.Length == 0 ||
!request.TryGetValue("SESSIONID", out object SESSIONIDobj) || SESSIONIDobj is not string sessionStr)
{
m_log.WarnFormat("[HGFRIENDS HANDLER]: ignoring request without Key or SessionID");
return false;
}
if (request["KEY"] == null || request["SESSIONID"] == null)
return false;
string serviceKey = request["KEY"].ToString();
string sessionStr = request["SESSIONID"].ToString();
UUID sessionID;
if (!UUID.TryParse(sessionStr, out sessionID) || serviceKey.Length == 0)
if (!UUID.TryParse(sessionStr, out UUID sessionID))
return false;
if (!m_UserAgentService.VerifyAgent(sessionID, serviceKey))
@@ -325,8 +304,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
doc.AppendChild(xmlnode);
XmlElement rootElement = doc.CreateElement("", "ServerResponse",
"");
XmlElement rootElement = doc.CreateElement("", "ServerResponse", "");
doc.AppendChild(rootElement);
@@ -342,8 +320,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
{
XmlDocument doc = new XmlDocument();
XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration,
"", "");
XmlNode xmlnode = doc.CreateNode(XmlNodeType.XmlDeclaration, "", "");
doc.AppendChild(xmlnode);
@@ -380,8 +357,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
doc.AppendChild(xmlnode);
XmlElement rootElement = doc.CreateElement("", "ServerResponse",
"");
XmlElement rootElement = doc.CreateElement("", "ServerResponse", "");
doc.AppendChild(rootElement);
@@ -407,8 +383,7 @@ namespace OpenSim.Server.Handlers.Hypergrid
doc.AppendChild(xmlnode);
XmlElement rootElement = doc.CreateElement("", "ServerResponse",
"");
XmlElement rootElement = doc.CreateElement("", "ServerResponse", "");
doc.AppendChild(rootElement);

View File

@@ -61,8 +61,7 @@ namespace OpenSim.Services.AssetService
if (assetConfig == null)
throw new Exception("No " + m_ConfigName + " configuration");
string loaderArgs = assetConfig.GetString("AssetLoaderArgs",
String.Empty);
string loaderArgs = assetConfig.GetString("AssetLoaderArgs", string.Empty);
bool assetLoaderEnabled = assetConfig.GetBoolean("AssetLoaderEnabled", true);
@@ -92,11 +91,8 @@ namespace OpenSim.Services.AssetService
public virtual AssetBase Get(string id)
{
// m_log.DebugFormat("[ASSET SERVICE]: Get asset for {0}", id);
UUID assetID;
if (!UUID.TryParse(id, out assetID))
// m_log.DebugFormat("[ASSET SERVICE]: Get asset for {0}", id);
if (!UUID.TryParse(id, out UUID assetID))
{
m_log.WarnFormat("[ASSET SERVICE]: Could not parse requested asset id {0}", id);
return null;
@@ -172,15 +168,13 @@ namespace OpenSim.Services.AssetService
public virtual string Store(AssetBase asset)
{
bool exists = m_Database.AssetsExist(new[] { asset.FullID })[0];
if (!exists)
bool[] assetsexist = m_Database.AssetsExist([ asset.FullID ] );
if (assetsexist.Length == 0 || !assetsexist[0])
{
// m_log.DebugFormat(
// "[ASSET SERVICE]: Storing asset {0} {1}, bytes {2}", asset.Name, asset.FullID, asset.Data.Length);
if (!m_Database.StoreAsset(asset))
{
return UUID.Zero.ToString();
}
return UUID.Zero.ToString();
}
// else
// {

View File

@@ -187,9 +187,8 @@ namespace OpenSim.Services.AssetService
public virtual string Store(AssetBase asset)
{
bool exists = m_Database.AssetsExist(new[] { asset.FullID })[0];
if (!exists)
{
bool[] assetsexist = m_Database.AssetsExist([ asset.FullID ] );
if (assetsexist.Length == 0 || !assetsexist[0]) {
// m_log.DebugFormat(
// "[XASSET SERVICE]: Storing asset {0} {1}, bytes {2}", asset.Name, asset.FullID, asset.Data.Length);
m_Database.StoreAsset(asset);

View File

@@ -359,7 +359,7 @@ namespace OpenSim.Services.Connectors
string newID;
try
{
newID = SynchronousRestObjectRequester.MakeRequest<AssetBase, string>("POST", uri, asset, 10000, m_Auth);
newID = SynchronousRestObjectRequester.MakeRequest<AssetBase, string>("POST", uri, asset, 30000, m_Auth);
}
catch
{

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.