From ff1302f8c8695b2ced627554c8e51db8b338d222 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 1 Dec 2020 13:09:53 +0000 Subject: [PATCH] update xmlrpc.dll with a fix for empty base64 case --- OpenSim/Server/Base/HttpServerBase.cs | 16 ++++++------ OpenSim/Server/ServerMain.cs | 23 ++++++++---------- .../PresenceService/PresenceService.cs | 6 ++--- bin/XMLRPC.dll | Bin 25600 -> 26112 bytes 4 files changed, 20 insertions(+), 25 deletions(-) diff --git a/OpenSim/Server/Base/HttpServerBase.cs b/OpenSim/Server/Base/HttpServerBase.cs index 5e76156ee8..ca1571f474 100755 --- a/OpenSim/Server/Base/HttpServerBase.cs +++ b/OpenSim/Server/Base/HttpServerBase.cs @@ -91,15 +91,15 @@ namespace OpenSim.Server.Base } else { - string cert_path = networkConfig.GetString("cert_path",String.Empty); - if (cert_path == String.Empty) + string cert_path = networkConfig.GetString("cert_path", string.Empty); + if (cert_path == string.Empty) { System.Console.WriteLine("ERROR: Path to X509 certificate is missing, server can't start."); Environment.Exit(1); } - string cert_pass = networkConfig.GetString("cert_pass",String.Empty); - if (cert_pass == String.Empty) + string cert_pass = networkConfig.GetString("cert_pass", string.Empty); + if (cert_pass == string.Empty) { System.Console.WriteLine("ERROR: Password for X509 certificate is missing, server can't start."); Environment.Exit(1); @@ -119,14 +119,14 @@ namespace OpenSim.Server.Base m_log.WarnFormat("[SSL]: External flag is {0}", ssl_external); if (!ssl_external) { - string cert_path = networkConfig.GetString("cert_path",String.Empty); - if ( cert_path == String.Empty ) + string cert_path = networkConfig.GetString("cert_path", string.Empty); + if ( cert_path == string.Empty ) { System.Console.WriteLine("Path to X509 certificate is missing, server can't start."); Thread.CurrentThread.Abort(); } - string cert_pass = networkConfig.GetString("cert_pass",String.Empty); - if ( cert_pass == String.Empty ) + string cert_pass = networkConfig.GetString("cert_pass", string.Empty); + if ( cert_pass == string.Empty ) { System.Console.WriteLine("Password for X509 certificate is missing, server can't start."); Thread.CurrentThread.Abort(); diff --git a/OpenSim/Server/ServerMain.cs b/OpenSim/Server/ServerMain.cs index 41844c09b8..f18e25a684 100644 --- a/OpenSim/Server/ServerMain.cs +++ b/OpenSim/Server/ServerMain.cs @@ -49,9 +49,7 @@ namespace OpenSim.Server MethodBase.GetCurrentMethod().DeclaringType); protected static HttpServerBase m_Server = null; - - protected static List m_ServiceConnectors = - new List(); + protected static List m_ServiceConnectors = new List(); protected static PluginLoader loader; private static bool m_NoVerifyCertChain = false; @@ -80,7 +78,7 @@ namespace OpenSim.Server Culture.SetCurrentCulture(); Culture.SetDefaultCurrentCulture(); - ServicePointManager.DefaultConnectionLimit = 32; + ServicePointManager.DefaultConnectionLimit = 64; ServicePointManager.MaxServicePointIdleTime = 30000; ServicePointManager.Expect100Continue = true; // needed now to suport auto redir without writecache @@ -105,7 +103,7 @@ namespace OpenSim.Server m_NoVerifyCertHostname = serverConfig.GetBoolean("NoVerifyCertHostname", m_NoVerifyCertHostname); - string connList = serverConfig.GetString("ServiceConnectors", String.Empty); + string connList = serverConfig.GetString("ServiceConnectors", string.Empty); registryLocation = serverConfig.GetString("RegistryLocation","."); @@ -113,28 +111,27 @@ namespace OpenSim.Server if (servicesConfig != null) { List servicesList = new List(); - if (connList != String.Empty) + if (!string.IsNullOrEmpty(connList)) servicesList.Add(connList); foreach (string k in servicesConfig.GetKeys()) { string v = servicesConfig.GetString(k); - if (v != String.Empty) + if (!string.IsNullOrEmpty(v)) servicesList.Add(v); } - connList = String.Join(",", servicesList.ToArray()); + connList = string.Join(",", servicesList.ToArray()); } string[] conns = connList.Split(new char[] {',', ' ', '\n', '\r', '\t'}); -// int i = 0; foreach (string c in conns) { - if (c == String.Empty) + if (string.IsNullOrEmpty(c)) continue; - string configName = String.Empty; + string configName = string.Empty; string conn = c; uint port = 0; @@ -173,12 +170,12 @@ namespace OpenSim.Server IServiceConnector connector = null; - Object[] modargs = new Object[] { m_Server.Config, server, configName }; + object[] modargs = new object[] { m_Server.Config, server, configName }; connector = ServerUtils.LoadPlugin(conn, modargs); if (connector == null) { - modargs = new Object[] { m_Server.Config, server }; + modargs = new object[] { m_Server.Config, server }; connector = ServerUtils.LoadPlugin(conn, modargs); } diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index 8bf992c7fd..d61637b6fb 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs @@ -149,11 +149,9 @@ namespace OpenSim.Services.PresenceService { try { - bool inCache = false; - if(!BySessionCache.TryGetValue(sessionID, out PresenceData presence)) + bool inCache = BySessionCache.TryGetValue(sessionID, out PresenceData presence); + if(!inCache) presence = m_Database.Get(sessionID); - else - inCache = true; bool success; if (presence == null) diff --git a/bin/XMLRPC.dll b/bin/XMLRPC.dll index 5d4923c0111f7a1b43ec33f36d9bf695331b6091..2189d090268d0b6e8283f915264d38db18b0c6e7 100755 GIT binary patch delta 9852 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 delta 9491 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