diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 8390526600..daa7846a70 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -173,11 +173,15 @@ namespace OpenSim.Framework private static readonly string regexInvalidPathChars = $"[{new String(Path.GetInvalidPathChars())}]"; private static readonly object XferLock = new(); - public static readonly char[] SplitCommaArray = new char[] { ',' }; - public static readonly char[] SplitDotArray = new char[] { '.' }; - public static readonly char[] SplitColonArray = new char[] { ':' }; - public static readonly char[] SplitSemicolonArray = new char[] { ';' }; - public static readonly char[] SplitSlashArray = new char[] { '/' }; + public static readonly char[] SplitCommaArray = [',']; + public static readonly char[] SplitDotArray = ['.']; + public static readonly char[] SplitColonArray = [':']; + public static readonly char[] SplitSemicolonArray = [';']; + public static readonly char[] SplitSlashArray = ['/']; + public static readonly char[] SplitSpaceArray = [' ']; + public static readonly char[] SplitSlashSpaceArray = ['/', ' ']; + public static readonly char[] SplitDoubleQuoteSpaceArray = ['"', ' ']; + public static readonly char[] SplitSlashColonArray = ['/', ':']; public static readonly XmlReaderSettings SharedXmlReaderSettings = new() { @@ -520,9 +524,9 @@ namespace OpenSim.Framework Uri uri = new(uristr); serviceURI = uri.AbsoluteUri; if (uri.Port == 80) - serviceURI = $"{serviceURI.Trim(new char[] { '/', ' ' })}:80/"; + serviceURI = $"{serviceURI.Trim(SplitSlashSpaceArray)}:80/"; else if (uri.Port == 443) - serviceURI = $"{serviceURI.Trim(new char[] { '/', ' ' })}:443/"; + serviceURI = $"{serviceURI.Trim(SplitSlashSpaceArray)}:443/"; serviceHost = uri.Host; IPEndPoint ep = Util.getEndPoint(serviceHost, uri.Port); @@ -646,12 +650,12 @@ namespace OpenSim.Framework } if (!string.IsNullOrEmpty(regionName)) - regionName = regionName.Trim(new char[] { '"', ' ' }); + regionName = regionName.Trim(SplitDoubleQuoteSpaceArray); serverURI = uri.AbsoluteUri; if (uri.Port == 80) - serverURI = $"{serverURI.Trim(new char[] { '/', ' ' })}:80/"; + serverURI = $"{serverURI.Trim(SplitSlashSpaceArray)}:80/"; else if (uri.Port == 443) - serverURI = $"{serverURI.Trim(new char[] { '/', ' ' })}:443/"; + serverURI = $"{serverURI.Trim(SplitSlashSpaceArray)}:443/"; return true; } @@ -1206,16 +1210,14 @@ namespace OpenSim.Framework [MethodImpl(MethodImplOptions.AggressiveInlining)] private static byte[] ComputeMD5Hash(string data, Encoding encoding) { - using MD5 md5 = MD5.Create(); - return md5.ComputeHash(encoding.GetBytes(data)); + return MD5.HashData(encoding.GetBytes(data)); } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static UUID ComputeASCIIMD5UUID(string data) { - using MD5 md5 = MD5.Create(); - byte[] bytes = md5.ComputeHash(Encoding.ASCII.GetBytes(data)); - UUID uuid = new(bytes,2); + byte[] bytes = MD5.HashData(Encoding.ASCII.GetBytes(data)); + UUID uuid = new(bytes, 2); uuid.c &= 0x0fff; uuid.c |= 0x3000; uuid.d &= 0x3f; @@ -1337,8 +1339,7 @@ namespace OpenSim.Framework private static byte[] ComputeSHA1Hash(byte[] src) { - using SHA1 sha = SHA1.Create(); - return sha.ComputeHash(src); + return SHA1.HashData(src); } [MethodImpl(MethodImplOptions.AggressiveInlining)] @@ -1356,9 +1357,7 @@ namespace OpenSim.Framework [MethodImpl(MethodImplOptions.AggressiveInlining)] public static UUID ComputeSHA1UUID(byte[] src) { - byte[] ret; - using (SHA1 sha = SHA1.Create()) - ret = sha.ComputeHash(src); + byte[] ret = SHA1.HashData(src); UUID uuid = new(ret, 2); uuid.c &= 0x0fff; uuid.c |= 0x5000; @@ -1456,7 +1455,7 @@ namespace OpenSim.Framework { iv = ivString.Length == 0 ? Convert.FromHexString(encryptedText[..sep]): - MD5.Create().ComputeHash(Utils.StringToBytesNoTerm(ivString)); + MD5.HashData(Utils.StringToBytesNoTerm(ivString)); buffer = Convert.FromHexString(encryptedText[(sep + 1)..]); } catch @@ -1464,7 +1463,7 @@ namespace OpenSim.Framework return string.Empty; } - byte[] aesKey = SHA256.Create().ComputeHash(Utils.StringToBytesNoTerm(secret)); + byte[] aesKey = SHA256.HashData(Utils.StringToBytesNoTerm(secret)); using Aes aes = Aes.Create(); aes.Key = aesKey; @@ -1617,7 +1616,7 @@ namespace OpenSim.Framework return output.ToString(); } - private static IPEndPoint dummyIPEndPoint = new IPEndPoint(IPAddress.Any, 0); + private static readonly IPEndPoint dummyIPEndPoint = new IPEndPoint(IPAddress.Any, 0); private static readonly ExpiringCacheOS dnscache = new(30000); private static readonly ExpiringCacheOS EndpointsCache = new(300000); @@ -1641,7 +1640,7 @@ namespace OpenSim.Framework [MethodImpl(MethodImplOptions.AggressiveInlining)] public static IPAddress GetHostFromURL(string url) { - return GetHostFromDNS(url.Split(new char[] { '/', ':' })[3]); + return GetHostFromDNS(url.Split(SplitSlashColonArray)[3]); } /// @@ -2252,7 +2251,7 @@ namespace OpenSim.Framework public static void SerializeToFile(string filename, Object obj) { - IFormatter formatter = new BinaryFormatter(); + var formatter = new BinaryFormatter(); try { using Stream stream = new FileStream(filename, FileMode.Create,FileAccess.Write, FileShare.None); @@ -2269,7 +2268,7 @@ namespace OpenSim.Framework try { using Stream stream = new FileStream(filename, FileMode.Open,FileAccess.Read, FileShare.None); - IFormatter formatter = new BinaryFormatter(); + var formatter = new BinaryFormatter(); return formatter.Deserialize(stream); } catch (Exception e) @@ -2506,10 +2505,10 @@ namespace OpenSim.Framework passPosition = connectionString.IndexOf("password", StringComparison.OrdinalIgnoreCase); if (passPosition == -1) return connectionString; - passPosition = connectionString.IndexOf("=", passPosition); + passPosition = connectionString.IndexOf('=', passPosition); if (passPosition < connectionString.Length) passPosition += 1; - passEndPosition = connectionString.IndexOf(";", passPosition); + passEndPosition = connectionString.IndexOf(';', passPosition); return $"{connectionString[..passPosition]}***{connectionString[passEndPosition..]}"; } @@ -3758,7 +3757,7 @@ namespace OpenSim.Framework }; reader.ReadEndElement(); - UUID.TryParse(idStr, out UUID id); + _ = UUID.TryParse(idStr, out UUID id); return id; } @@ -3895,7 +3894,7 @@ namespace OpenSim.Framework secret = value[indxA..]; } - string[] name = n.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + string[] name = n.Split(SplitSpaceArray, StringSplitOptions.RemoveEmptyEntries); if (name.Length == 0) { firstname = string.Empty; @@ -3970,7 +3969,7 @@ namespace OpenSim.Framework secret = value[indxA..]; } - string[] name = n.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + string[] name = n.Split(SplitSpaceArray, StringSplitOptions.RemoveEmptyEntries); if (name.Length == 0) { firstname = string.Empty; @@ -4044,7 +4043,7 @@ namespace OpenSim.Framework else n = value[indxB..seps[2]]; - string[] name = n.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + string[] name = n.Split(SplitSpaceArray, StringSplitOptions.RemoveEmptyEntries); if (name.Length == 0) { firstname = string.Empty; @@ -4110,7 +4109,7 @@ namespace OpenSim.Framework else n = value[indxB..seps[2]]; - string[] name = n.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + string[] name = n.Split(SplitSpaceArray, StringSplitOptions.RemoveEmptyEntries); if (name.Length == 0) { firstname = string.Empty; @@ -4368,8 +4367,8 @@ namespace OpenSim.Framework /// uuid[;homeURI[;first last]] public static string ProduceUserUniversalIdentifier(AgentCircuitData acircuit) { - if (acircuit.ServiceURLs.ContainsKey("HomeURI")) - return UniversalIdentifier(acircuit.AgentID, acircuit.firstname, acircuit.lastname, acircuit.ServiceURLs["HomeURI"].ToString()); + if (acircuit.ServiceURLs.TryGetValue("HomeURI", out object homeobj)) + return UniversalIdentifier(acircuit.AgentID, acircuit.firstname, acircuit.lastname, homeobj.ToString()); else return acircuit.AgentID.ToString(); }