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.IO;
using System.Threading;
using System.Xml;
using libsecondlife;
using Nini.Config;
using OpenSim.Framework.Console;
@ -148,22 +149,29 @@ namespace OpenSim.Framework.Communications.Cache
string filePath = Path.Combine(Util.configDir(), "OpenSimAssetSet.xml");
if (File.Exists(filePath))
{
XmlConfigSource source = new XmlConfigSource(filePath);
for (int i = 0; i < source.Configs.Count; i++)
try
{
// 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", "");
XmlConfigSource source = new XmlConfigSource(filePath);
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;
newAsset.InvType = invType;
assets.Add(newAsset);
AssetBase newAsset = CreateAsset(assetIdStr, name, fileName, false);
newAsset.Type = type;
newAsset.InvType = invType;
assets.Add(newAsset);
}
}
catch (XmlException e)
{
MainLog.Instance.Error("ASSETS", "Error loading " + filePath + ": " + e.ToString());
}
}
assets.ForEach(action);

View File

@ -27,8 +27,10 @@
*/
using System.IO;
using System.Xml;
using libsecondlife;
using Nini.Config;
using OpenSim.Framework.Console;
namespace OpenSim.Framework.Communications.Cache
{
@ -65,8 +67,15 @@ namespace OpenSim.Framework.Communications.Cache
string filePath = Path.Combine(Util.configDir(), "OpenSimLibrary.xml");
if (File.Exists(filePath))
{
XmlConfigSource source = new XmlConfigSource(filePath);
ReadItemsFromFile(source);
try
{
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() != "")
{
configurationPlugin.SetFileName(configurationFilename);
configurationPlugin.LoadData();
useFile = true;
try
{
configurationPlugin.LoadData();
useFile = true;
}
catch (XmlException e)
{
MainLog.Instance.Error("Error loading " + configurationFilename + ": " + e.ToString());
useFile = false;
}
}
else
{
@ -189,7 +197,6 @@ namespace OpenSim.Framework
bool ignoreNextFromConfig = false;
while (convertSuccess == false)
{
string console_result = "";
string attribute = null;
if (useFile || (!useFile && configurationFromXMLNode != null))
@ -228,7 +235,6 @@ namespace OpenSim.Framework
//Dont Ask! Just use default
console_result = configOption.configurationDefault;
}
}
}
else
@ -292,7 +298,6 @@ namespace OpenSim.Framework
{
convertSuccess = true;
return_result = intResult;
}
errorMessage = "a signed 32 bit integer (int)";
break;
@ -347,7 +352,6 @@ namespace OpenSim.Framework
{
convertSuccess = true;
return_result = uintResult;
}
errorMessage = "an unsigned 32 bit integer (uint)";
break;
@ -387,7 +391,6 @@ namespace OpenSim.Framework
configurationPlugin.SetAttribute(configOption.configurationKey, console_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.");