add a missing foldername urlencode on xinventory folder update

This commit is contained in:
UbitUmarov
2025-08-25 00:12:55 +01:00
parent 9dbaa4d3ac
commit 1b81b995ef
2 changed files with 26 additions and 32 deletions

View File

@@ -327,23 +327,22 @@ namespace OpenSim.Server.Base
public static Dictionary<string, object> ParseQueryString(string query)
{
string[] terms = query.Split(new char[] { '&' });
string[] terms = query.Split(['&']);
int nterms = terms.Length;
if (nterms == 0)
return new Dictionary<string, object>();
if (terms.Length == 0)
return [];
Dictionary<string, object> result = new Dictionary<string, object>(nterms);
Dictionary<string, object> result = new Dictionary<string, object>(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))
{

View File

@@ -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<InventoryFolderBase> GetInventorySkeleton(UUID principalID)
{
Dictionary<string,object> ret = MakeRequest(
$"METHOD=GETINVENTORYSKELETON&PRINCIPAL={principalID}");
Dictionary<string,object> ret = MakeRequest($"METHOD=GETINVENTORYSKELETON&PRINCIPAL={principalID}");
if (!CheckReturn(ret))
return null;
Dictionary<string, object> folders = (Dictionary<string, object>)ret["FOLDERS"];
List<InventoryFolderBase> fldrs = new();
List<InventoryFolderBase> fldrs = [];
try
{
foreach (Object o in folders.Values)
foreach (object o in folders.Values)
fldrs.Add(BuildFolder((Dictionary<string, object>)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<InventoryFolderBase>(),
Items = new List<InventoryItemBase>()
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<string,object> 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<UUID> folderIDs)
{
List<string> slist = new();
List<string> slist = [];
foreach (UUID f in folderIDs)
slist.Add(f.ToString());