From 1b81b995ef48fe3a4cca34bc546f763f50238a7a Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Mon, 25 Aug 2025 00:12:55 +0100 Subject: [PATCH] add a missing foldername urlencode on xinventory folder update --- OpenSim/Server/Base/ServerUtils.cs | 17 ++++---- .../Inventory/XInventoryServicesConnector.cs | 41 ++++++++----------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs index 91d46a39ab..42d6b7eac5 100644 --- a/OpenSim/Server/Base/ServerUtils.cs +++ b/OpenSim/Server/Base/ServerUtils.cs @@ -327,23 +327,22 @@ namespace OpenSim.Server.Base public static Dictionary ParseQueryString(string query) { - string[] terms = query.Split(new char[] { '&' }); + string[] terms = query.Split(['&']); - int nterms = terms.Length; - if (nterms == 0) - return new Dictionary(); + if (terms.Length == 0) + return []; - Dictionary result = new Dictionary(nterms); + Dictionary result = new Dictionary(terms.Length); string name; - for (int i = 0; i < nterms; ++i) + for (int i = 0; i < terms.Length; ++i) { - string[] elems = terms[i].Split(new char[] { '=' }); + string[] elems = terms[i].Split(['=']); if (elems.Length == 0) continue; - if (String.IsNullOrWhiteSpace(elems[0])) + if (string.IsNullOrWhiteSpace(elems[0])) continue; name = System.Web.HttpUtility.UrlDecode(elems[0]); @@ -351,7 +350,7 @@ namespace OpenSim.Server.Base if (name.EndsWith("[]")) { name = name.Substring(0, name.Length - 2); - if (String.IsNullOrWhiteSpace(name)) + if (string.IsNullOrWhiteSpace(name)) continue; if (result.ContainsKey(name)) { diff --git a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs index 02679ed599..e6c38aaba0 100644 --- a/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/XInventoryServicesConnector.cs @@ -26,22 +26,18 @@ */ using log4net; -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Reflection; using Nini.Config; - +using OpenMetaverse; using OpenSim.Framework; using OpenSim.Framework.Monitoring; -using OpenSim.Framework.ServiceAuth; -using OpenSim.Services.Interfaces; using OpenSim.Server.Base; -using OpenMetaverse; +using OpenSim.Services.Interfaces; +using System; +using System.Collections.Generic; +using System.Net.Http; +using System.Reflection; using System.Text; -using System.Threading; +using System.Web; namespace OpenSim.Services.Connectors { @@ -157,19 +153,18 @@ namespace OpenSim.Services.Connectors public List GetInventorySkeleton(UUID principalID) { - Dictionary ret = MakeRequest( - $"METHOD=GETINVENTORYSKELETON&PRINCIPAL={principalID}"); + Dictionary ret = MakeRequest($"METHOD=GETINVENTORYSKELETON&PRINCIPAL={principalID}"); if (!CheckReturn(ret)) return null; Dictionary folders = (Dictionary)ret["FOLDERS"]; - List fldrs = new(); + List fldrs = []; try { - foreach (Object o in folders.Values) + foreach (object o in folders.Values) fldrs.Add(BuildFolder((Dictionary)o)); } catch (Exception e) @@ -205,8 +200,8 @@ namespace OpenSim.Services.Connectors { InventoryCollection inventory = new() { - Folders = new(), - Items = new(), + Folders = [], + Items = [], OwnerID = principalID }; @@ -233,7 +228,7 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.WarnFormat("[XINVENTORY SERVICES CONNECTOR]: Exception in GetFolderContent: {0}", e.Message); + m_log.Warn("[XINVENTORY SERVICES CONNECTOR]: Exception in GetFolderContent: " + e.Message); } return inventory; @@ -285,8 +280,8 @@ namespace OpenSim.Services.Connectors { FolderID = inventoryFolderID, OwnerID = inventoryOwnerID, - Folders = new List(), - Items = new List() + Folders = [], + Items = [] }; if (!ret.TryGetValue("VERSION", out object retVer) || @@ -322,7 +317,7 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.WarnFormat("[XINVENTORY SERVICES CONNECTOR]: Exception in GetMultipleFoldersContent: {0}", e.Message); + m_log.Warn("[XINVENTORY SERVICES CONNECTOR]: Exception in GetMultipleFoldersContent: {0}" + e.Message); } return inventoryArr; @@ -363,7 +358,7 @@ namespace OpenSim.Services.Connectors public bool UpdateFolder(InventoryFolderBase folder) { Dictionary ret = MakeRequest( - $"METHOD=UPDATEFOLDER&ParentID={folder.ParentID}&Type={folder.Type}&Version={folder.Version}&Name={folder.Name}&Owner={folder.Owner}&ID={folder.ID}"); + $"METHOD=UPDATEFOLDER&ParentID={folder.ParentID}&Type={folder.Type}&Version={folder.Version}&Name={HttpUtility.UrlEncode(folder.Name)}&Owner={folder.Owner}&ID={folder.ID}"); return CheckReturn(ret); } @@ -377,7 +372,7 @@ namespace OpenSim.Services.Connectors public bool DeleteFolders(UUID principalID, List folderIDs) { - List slist = new(); + List slist = []; foreach (UUID f in folderIDs) slist.Add(f.ToString());