catch exceptions when loading malformed xml files

afrisby
Jeff Ames 2007-11-17 05:53:12 +00:00
parent c5ddbd3254
commit 946db5461c
3 changed files with 42 additions and 22 deletions

View File

@ -2,6 +2,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Threading; using System.Threading;
using System.Xml;
using libsecondlife; using libsecondlife;
using Nini.Config; using Nini.Config;
using OpenSim.Framework.Console; using OpenSim.Framework.Console;
@ -148,22 +149,29 @@ namespace OpenSim.Framework.Communications.Cache
string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml"); string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml");
if (File.Exists(filePath)) if (File.Exists(filePath))
{ {
XmlConfigSource source = new XmlConfigSource(filePath); try
for (int i = 0; i < source.Configs.Count; i++)
{ {
// System.Console.WriteLine("loading asset into database"); XmlConfigSource source = new XmlConfigSource(filePath);
string assetIdStr = source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated());
string name = source.Configs[i].GetString("name", "");
sbyte type = (sbyte) source.Configs[i].GetInt("assetType", 0);
sbyte invType = (sbyte) source.Configs[i].GetInt("inventoryType", 0);
string fileName = source.Configs[i].GetString("fileName", "");
AssetBase newAsset = CreateAsset(assetIdStr, name, fileName, false); for (int i = 0; i < source.Configs.Count; i++)
{
// System.Console.WriteLine("loading asset into database");
string assetIdStr = source.Configs[i].GetString("assetID", LLUUID.Random().ToStringHyphenated());
string name = source.Configs[i].GetString("name", "");
sbyte type = (sbyte) source.Configs[i].GetInt("assetType", 0);
sbyte invType = (sbyte) source.Configs[i].GetInt("inventoryType", 0);
string fileName = source.Configs[i].GetString("fileName", "");
newAsset.Type = type; AssetBase newAsset = CreateAsset(assetIdStr, name, fileName, false);
newAsset.InvType = invType;
assets.Add(newAsset); newAsset.Type = type;
newAsset.InvType = invType;
assets.Add(newAsset);
}
}
catch (XmlException e)
{
MainLog.Instance.Error("ASSETS", "Error loading " + filePath + ": " + e.ToString());
} }
} }
assets.ForEach(action); assets.ForEach(action);

View File

@ -27,8 +27,10 @@
*/ */
using System.IO; using System.IO;
using System.Xml;
using libsecondlife; using libsecondlife;
using Nini.Config; using Nini.Config;
using OpenSim.Framework.Console;
namespace OpenSim.Framework.Communications.Cache namespace OpenSim.Framework.Communications.Cache
{ {
@ -65,8 +67,15 @@ namespace OpenSim.Framework.Communications.Cache
string filePath = Path.Combine(Util.configDir(), "OpenSimLibrary.xml"); string filePath = Path.Combine(Util.configDir(), "OpenSimLibrary.xml");
if (File.Exists(filePath)) if (File.Exists(filePath))
{ {
XmlConfigSource source = new XmlConfigSource(filePath); try
ReadItemsFromFile(source); {
XmlConfigSource source = new XmlConfigSource(filePath);
ReadItemsFromFile(source);
}
catch (XmlException e)
{
MainLog.Instance.Error("INVENTORY", "Error loading " + filePath + ": " + e.ToString());
}
} }
} }

View File

@ -166,8 +166,16 @@ namespace OpenSim.Framework
if (configurationFilename.Trim() != "") if (configurationFilename.Trim() != "")
{ {
configurationPlugin.SetFileName(configurationFilename); configurationPlugin.SetFileName(configurationFilename);
configurationPlugin.LoadData(); try
useFile = true; {
configurationPlugin.LoadData();
useFile = true;
}
catch (XmlException e)
{
MainLog.Instance.Error("Error loading " + configurationFilename + ": " + e.ToString());
useFile = false;
}
} }
else else
{ {
@ -189,7 +197,6 @@ namespace OpenSim.Framework
bool ignoreNextFromConfig = false; bool ignoreNextFromConfig = false;
while (convertSuccess == false) while (convertSuccess == false)
{ {
string console_result = ""; string console_result = "";
string attribute = null; string attribute = null;
if (useFile || (!useFile && configurationFromXMLNode != null)) if (useFile || (!useFile && configurationFromXMLNode != null))
@ -228,7 +235,6 @@ namespace OpenSim.Framework
//Dont Ask! Just use default //Dont Ask! Just use default
console_result = configOption.configurationDefault; console_result = configOption.configurationDefault;
} }
} }
} }
else else
@ -292,7 +298,6 @@ namespace OpenSim.Framework
{ {
convertSuccess = true; convertSuccess = true;
return_result = intResult; return_result = intResult;
} }
errorMessage = "a signed 32 bit integer (int)"; errorMessage = "a signed 32 bit integer (int)";
break; break;
@ -347,7 +352,6 @@ namespace OpenSim.Framework
{ {
convertSuccess = true; convertSuccess = true;
return_result = uintResult; return_result = uintResult;
} }
errorMessage = "an unsigned 32 bit integer (uint)"; errorMessage = "an unsigned 32 bit integer (uint)";
break; break;
@ -387,7 +391,6 @@ namespace OpenSim.Framework
configurationPlugin.SetAttribute(configOption.configurationKey, console_result); configurationPlugin.SetAttribute(configOption.configurationKey, console_result);
} }
if (!this.resultFunction(configOption.configurationKey, return_result)) if (!this.resultFunction(configOption.configurationKey, return_result))
{ {
Console.MainLog.Instance.Notice("The handler for the last configuration option denied that input, please try again."); Console.MainLog.Instance.Notice("The handler for the last configuration option denied that input, please try again.");