diff --git a/OpenSim/Framework/Serialization/ArchiveConstants.cs b/OpenSim/Framework/Serialization/ArchiveConstants.cs
index 475a9de0cb..3143e3bec7 100644
--- a/OpenSim/Framework/Serialization/ArchiveConstants.cs
+++ b/OpenSim/Framework/Serialization/ArchiveConstants.cs
@@ -27,6 +27,7 @@
using System;
using System.Collections.Generic;
+using System.Text;
using OpenMetaverse;
namespace OpenSim.Framework.Serialization
@@ -171,6 +172,30 @@ namespace OpenSim.Framework.Serialization
public static string CreateOarObjectPath(string objectName, UUID uuid, Vector3 pos)
{
return OBJECTS_PATH + CreateOarObjectFilename(objectName, uuid, pos);
- }
+ }
+
+ ///
+ /// Extract a plain path from an IAR path
+ ///
+ ///
+ ///
+ public static string ExtractPlainPathFromIarPath(string iarPath)
+ {
+ List plainDirs = new List();
+
+ string[] iarDirs = iarPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
+
+ foreach (string iarDir in iarDirs)
+ {
+ if (!iarDir.Contains(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR))
+ plainDirs.Add(iarDir);
+
+ int i = iarDir.LastIndexOf(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR);
+
+ plainDirs.Add(iarDir.Remove(i));
+ }
+
+ return string.Join("/", plainDirs.ToArray());
+ }
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
index 31dfe145f5..7683288b62 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveReadRequest.cs
@@ -54,6 +54,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
private UserAccount m_userInfo;
private string m_invPath;
+
+ ///
+ /// Do we want to merge this load with existing inventory?
+ ///
+ protected bool m_merge;
///
/// We only use this to request modules
@@ -66,19 +71,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
private Stream m_loadStream;
public InventoryArchiveReadRequest(
- Scene scene, UserAccount userInfo, string invPath, string loadPath)
+ Scene scene, UserAccount userInfo, string invPath, string loadPath, bool merge)
: this(
scene,
userInfo,
invPath,
- new GZipStream(ArchiveHelpers.GetStream(loadPath), CompressionMode.Decompress))
+ new GZipStream(ArchiveHelpers.GetStream(loadPath), CompressionMode.Decompress),
+ merge)
{
}
public InventoryArchiveReadRequest(
- Scene scene, UserAccount userInfo, string invPath, Stream loadStream)
+ Scene scene, UserAccount userInfo, string invPath, Stream loadStream, bool merge)
{
m_scene = scene;
+ m_merge = merge;
m_userInfo = userInfo;
m_invPath = invPath;
m_loadStream = loadStream;
@@ -91,7 +98,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
/// A list of the inventory nodes loaded. If folders were loaded then only the root folders are
/// returned
///
- public List Execute()
+ public HashSet Execute()
{
try
{
@@ -100,7 +107,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
int failedAssetRestores = 0;
int successfulItemRestores = 0;
- List loadedNodes = new List();
+ HashSet loadedNodes = new HashSet();
List folderCandidates
= InventoryArchiveUtils.FindFolderByPath(
@@ -158,9 +165,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{
successfulItemRestores++;
- // If we're loading an item directly into the given destination folder then we need to record
- // it separately from any loaded root folders
- if (rootDestinationFolder == foundFolder)
+ // If we aren't loading the folder containing the item then well need to update the
+ // viewer separately for that item.
+ if (!loadedNodes.Contains(foundFolder))
loadedNodes.Add(item);
}
}
@@ -205,14 +212,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
string iarPath,
InventoryFolderBase rootDestFolder,
Dictionary resolvedFolders,
- List loadedNodes)
+ HashSet loadedNodes)
{
string iarPathExisting = iarPath;
// m_log.DebugFormat(
// "[INVENTORY ARCHIVER]: Loading folder {0} {1}", rootDestFolder.Name, rootDestFolder.ID);
- InventoryFolderBase destFolder = ResolveDestinationFolder(rootDestFolder, ref iarPathExisting, resolvedFolders);
+ InventoryFolderBase destFolder
+ = ResolveDestinationFolder(rootDestFolder, ref iarPathExisting, resolvedFolders);
// m_log.DebugFormat(
// "[INVENTORY ARCHIVER]: originalArchivePath [{0}], section already loaded [{1}]",
@@ -251,46 +259,55 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
{
// string originalArchivePath = archivePath;
- InventoryFolderBase destFolder = null;
-
- if (archivePath.Length > 0)
+ while (archivePath.Length > 0)
{
- while (null == destFolder && archivePath.Length > 0)
+ m_log.DebugFormat("[INVENTORY ARCHIVER]: Trying to resolve destination folder {0}", archivePath);
+
+ if (resolvedFolders.ContainsKey(archivePath))
{
-// m_log.DebugFormat("[INVENTORY ARCHIVER]: Trying to resolve destination folder {0}", archivePath);
-
- if (resolvedFolders.ContainsKey(archivePath))
+// m_log.DebugFormat(
+// "[INVENTORY ARCHIVER]: Found previously created folder from archive path {0}", archivePath);
+ return resolvedFolders[archivePath];
+ }
+ else
+ {
+ if (m_merge)
{
-// m_log.DebugFormat(
-// "[INVENTORY ARCHIVER]: Found previously created folder from archive path {0}", archivePath);
- destFolder = resolvedFolders[archivePath];
+ // TODO: Using m_invPath is totally wrong - what we need to do is strip the uuid from the
+ // iar name and try to find that instead.
+ string plainPath = ArchiveConstants.ExtractPlainPathFromIarPath(archivePath);
+ List folderCandidates
+ = InventoryArchiveUtils.FindFolderByPath(
+ m_scene.InventoryService, m_userInfo.PrincipalID, plainPath);
+
+ if (folderCandidates.Count != 0)
+ {
+ InventoryFolderBase destFolder = folderCandidates[0];
+ resolvedFolders[archivePath] = destFolder;
+ return destFolder;
+ }
+ }
+
+ // Don't include the last slash so find the penultimate one
+ int penultimateSlashIndex = archivePath.LastIndexOf("/", archivePath.Length - 2);
+
+ if (penultimateSlashIndex >= 0)
+ {
+ // Remove the last section of path so that we can see if we've already resolved the parent
+ archivePath = archivePath.Remove(penultimateSlashIndex + 1);
}
else
{
- // Don't include the last slash so find the penultimate one
- int penultimateSlashIndex = archivePath.LastIndexOf("/", archivePath.Length - 2);
-
- if (penultimateSlashIndex >= 0)
- {
- // Remove the last section of path so that we can see if we've already resolved the parent
- archivePath = archivePath.Remove(penultimateSlashIndex + 1);
- }
- else
- {
-// m_log.DebugFormat(
-// "[INVENTORY ARCHIVER]: Found no previously created folder for archive path {0}",
-// originalArchivePath);
- archivePath = string.Empty;
- destFolder = rootDestFolder;
- }
+// m_log.DebugFormat(
+// "[INVENTORY ARCHIVER]: Found no previously created folder for archive path {0}",
+// originalArchivePath);
+ archivePath = string.Empty;
+ return rootDestFolder;
}
}
}
- if (null == destFolder)
- destFolder = rootDestFolder;
-
- return destFolder;
+ return rootDestFolder;
}
///
@@ -316,24 +333,21 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
string iarPathExisting,
string iarPathToReplicate,
Dictionary resolvedFolders,
- List loadedNodes)
+ HashSet loadedNodes)
{
string[] rawDirsToCreate = iarPathToReplicate.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries);
- int i = 0;
- while (i < rawDirsToCreate.Length)
+ for (int i = 0; i < rawDirsToCreate.Length; i++)
{
// m_log.DebugFormat("[INVENTORY ARCHIVER]: Creating folder {0} from IAR", rawDirsToCreate[i]);
+ if (!rawDirsToCreate[i].Contains(ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR))
+ continue;
+
int identicalNameIdentifierIndex
= rawDirsToCreate[i].LastIndexOf(
ArchiveConstants.INVENTORY_NODE_NAME_COMPONENT_SEPARATOR);
- if (identicalNameIdentifierIndex < 0)
- {
- i++;
- continue;
- }
string newFolderName = rawDirsToCreate[i].Remove(identicalNameIdentifierIndex);
newFolderName = InventoryArchiveUtils.UnescapeArchivePath(newFolderName);
@@ -356,8 +370,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (0 == i)
loadedNodes.Add(destFolder);
-
- i++;
}
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
index f7a2b098f5..f03f2a1514 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
@@ -91,12 +91,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
scene.AddCommand(
this, "load iar",
- "load iar []",
+ "load iar []",
//"load iar [--merge] []",
"Load user inventory archive (IAR).",
- //"--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones"
+ //"--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones"
//+ " is user's first name." + Environment.NewLine
- " is user's first name." + Environment.NewLine
+ " is user's first name." + Environment.NewLine
+ " is user's last name." + Environment.NewLine
+ " is the path inside the user's inventory where the IAR should be loaded." + Environment.NewLine
+ " is the user's password." + Environment.NewLine
@@ -136,16 +136,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (handlerInventoryArchiveSaved != null)
handlerInventoryArchiveSaved(id, succeeded, userInfo, invPath, saveStream, reportedException);
}
-
+
public bool ArchiveInventory(
- Guid id, string firstName, string lastName, string invPath, string pass, Stream saveStream)
- {
- return ArchiveInventory(id, firstName, lastName, invPath, pass, saveStream, new Dictionary());
- }
+ Guid id, string firstName, string lastName, string invPath, string pass, Stream saveStream)
+ {
+ return ArchiveInventory(id, firstName, lastName, invPath, pass, saveStream, new Dictionary());
+ }
public bool ArchiveInventory(
- Guid id, string firstName, string lastName, string invPath, string pass, Stream saveStream,
- Dictionary options)
+ Guid id, string firstName, string lastName, string invPath, string pass, Stream saveStream,
+ Dictionary options)
{
if (m_scenes.Count > 0)
{
@@ -184,8 +184,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
}
public bool ArchiveInventory(
- Guid id, string firstName, string lastName, string invPath, string pass, string savePath,
- Dictionary options)
+ Guid id, string firstName, string lastName, string invPath, string pass, string savePath,
+ Dictionary options)
{
if (m_scenes.Count > 0)
{
@@ -224,13 +224,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
}
public bool DearchiveInventory(string firstName, string lastName, string invPath, string pass, Stream loadStream)
- {
- return DearchiveInventory(firstName, lastName, invPath, pass, loadStream, new Dictionary());
- }
-
+ {
+ return DearchiveInventory(firstName, lastName, invPath, pass, loadStream, new Dictionary());
+ }
+
public bool DearchiveInventory(
- string firstName, string lastName, string invPath, string pass, Stream loadStream,
- Dictionary options)
+ string firstName, string lastName, string invPath, string pass, Stream loadStream,
+ Dictionary options)
{
if (m_scenes.Count > 0)
{
@@ -241,10 +241,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (CheckPresence(userInfo.PrincipalID))
{
InventoryArchiveReadRequest request;
+ bool merge = (options.ContainsKey("merge") ? (bool)options["merge"] : false);
try
{
- request = new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadStream);
+ request = new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadStream, merge);
}
catch (EntryPointNotFoundException e)
{
@@ -273,8 +274,8 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
}
public bool DearchiveInventory(
- string firstName, string lastName, string invPath, string pass, string loadPath,
- Dictionary options)
+ string firstName, string lastName, string invPath, string pass, string loadPath,
+ Dictionary options)
{
if (m_scenes.Count > 0)
{
@@ -285,10 +286,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (CheckPresence(userInfo.PrincipalID))
{
InventoryArchiveReadRequest request;
+ bool merge = (options.ContainsKey("merge") ? (bool)options["merge"] : false);
try
- {
- request = new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadPath);
+ {
+ request = new InventoryArchiveReadRequest(m_aScene, userInfo, invPath, loadPath, merge);
}
catch (EntryPointNotFoundException e)
{
@@ -334,7 +336,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
if (mainParams.Count < 6)
{
m_log.Error(
- "[INVENTORY ARCHIVER]: usage is load iar []");
+ "[INVENTORY ARCHIVER]: usage is load iar [--merge] []");
return;
}
@@ -356,7 +358,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
catch (InventoryArchiverException e)
{
m_log.ErrorFormat("[INVENTORY ARCHIVER]: {0}", e.Message);
- }
+ }
}
///
@@ -469,7 +471,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
/// Notify the client of loaded nodes if they are logged in
///
/// Can be empty. In which case, nothing happens
- private void UpdateClientWithLoadedNodes(UserAccount userInfo, List loadedNodes)
+ private void UpdateClientWithLoadedNodes(UserAccount userInfo, HashSet loadedNodes)
{
if (loadedNodes.Count == 0)
return;
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
index 4531bfdfb2..2d80382f4a 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/Tests/InventoryArchiverTests.cs
@@ -629,7 +629,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene);
Dictionary foldersCreated = new Dictionary();
- List nodesLoaded = new List();
+ HashSet nodesLoaded = new HashSet();
string folder1Name = "1";
string folder2aName = "2a";
@@ -644,7 +644,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
{
// Test replication of path1
- new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null)
+ new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false)
.ReplicateArchivePathToUserInventory(
iarPath1, scene.InventoryService.GetRootFolder(ua1.PrincipalID),
foldersCreated, nodesLoaded);
@@ -661,7 +661,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
{
// Test replication of path2
- new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null)
+ new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false)
.ReplicateArchivePathToUserInventory(
iarPath2, scene.InventoryService.GetRootFolder(ua1.PrincipalID),
foldersCreated, nodesLoaded);
@@ -707,10 +707,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
string itemArchivePath = string.Join("", new string[] { folder1ArchiveName, folder2ArchiveName });
- new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null)
+ new InventoryArchiveReadRequest(scene, ua1, null, (Stream)null, false)
.ReplicateArchivePathToUserInventory(
itemArchivePath, scene.InventoryService.GetRootFolder(ua1.PrincipalID),
- new Dictionary(), new List());
+ new Dictionary(), new HashSet());
List folder1PostCandidates
= InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1ExistingName);
@@ -732,5 +732,45 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver.Tests
= InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1Post, "b");
Assert.That(folder2PostCandidates.Count, Is.EqualTo(1));
}
+
+ ///
+ /// Test replication of a partly existing archive path to the user's inventory. This should create
+ /// a merged path.
+ ///
+ [Test]
+ public void TestMergeIarPath()
+ {
+ TestHelper.InMethod();
+ log4net.Config.XmlConfigurator.Configure();
+
+ Scene scene = SceneSetupHelpers.SetupScene("inventory");
+ UserAccount ua1 = UserProfileTestUtils.CreateUserWithInventory(scene);
+
+ string folder1ExistingName = "a";
+ string folder2Name = "b";
+
+ InventoryFolderBase folder1
+ = UserInventoryTestUtils.CreateInventoryFolder(
+ scene.InventoryService, ua1.PrincipalID, folder1ExistingName);
+
+ string folder1ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder1ExistingName, UUID.Random());
+ string folder2ArchiveName = InventoryArchiveWriteRequest.CreateArchiveFolderName(folder2Name, UUID.Random());
+
+ string itemArchivePath = string.Join("", new string[] { folder1ArchiveName, folder2ArchiveName });
+
+ new InventoryArchiveReadRequest(scene, ua1, folder1ExistingName, (Stream)null, true)
+ .ReplicateArchivePathToUserInventory(
+ itemArchivePath, scene.InventoryService.GetRootFolder(ua1.PrincipalID),
+ new Dictionary(), new HashSet());
+
+ List folder1PostCandidates
+ = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, ua1.PrincipalID, folder1ExistingName);
+ Assert.That(folder1PostCandidates.Count, Is.EqualTo(1));
+ Assert.That(folder1PostCandidates[0].ID, Is.EqualTo(folder1.ID));
+
+ List folder2PostCandidates
+ = InventoryArchiveUtils.FindFolderByPath(scene.InventoryService, folder1PostCandidates[0], "b");
+ Assert.That(folder2PostCandidates.Count, Is.EqualTo(1));
+ }
}
}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
index 36dae6ba9f..9c20d68ce8 100644
--- a/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Library/LibraryModule.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
@@ -173,16 +173,16 @@ namespace OpenSim.Region.CoreModules.Framework.Library
m_log.InfoFormat("[LIBRARY MODULE]: Loading library archive {0} ({1})...", iarFileName, simpleName);
simpleName = GetInventoryPathFromName(simpleName);
- InventoryArchiveReadRequest archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, simpleName, iarFileName);
+ InventoryArchiveReadRequest archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, simpleName, iarFileName, false);
try
{
- List nodes = archread.Execute();
+ HashSet nodes = archread.Execute();
if (nodes != null && nodes.Count == 0)
{
// didn't find the subfolder with the given name; place it on the top
m_log.InfoFormat("[LIBRARY MODULE]: Didn't find {0} in library. Placing archive on the top level", simpleName);
archread.Close();
- archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName);
+ archread = new InventoryArchiveReadRequest(m_MockScene, uinfo, "/", iarFileName, false);
archread.Execute();
}
foreach (InventoryNodeBase node in nodes)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
index fe71ed54cd..5ae64395e7 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LS_Api.cs
@@ -1,4 +1,4 @@
-/*
+/*
* Copyright (c) Contributors, http://opensimulator.org/
* See CONTRIBUTORS.TXT for a full list of copyright holders.
*
diff --git a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs
index 42eca05ec5..96d2605058 100644
--- a/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Hypergrid/UserAgentServiceConnector.cs
@@ -358,7 +358,7 @@ namespace OpenSim.Services.Connectors.Hypergrid
private bool GetBoolResponse(XmlRpcRequest request, out string reason)
{
- //m_log.Debug("[HGrid]: Linking to " + uri);
+ //m_log.Debug("[USER AGENT CONNECTOR]: GetBoolResponse from/to " + m_ServerURL);
XmlRpcResponse response = null;
try
{
@@ -366,14 +366,14 @@ namespace OpenSim.Services.Connectors.Hypergrid
}
catch (Exception e)
{
- m_log.Debug("[USER AGENT CONNECTOR]: Unable to contact remote server ");
+ m_log.DebugFormat("[USER AGENT CONNECTOR]: Unable to contact remote server {0}", m_ServerURL);
reason = "Exception: " + e.Message;
return false;
}
if (response.IsFault)
{
- m_log.ErrorFormat("[HGrid]: remote call returned an error: {0}", response.FaultString);
+ m_log.ErrorFormat("[HGrid]: remote call to {0} returned an error: {1}", m_ServerURL, response.FaultString);
reason = "XMLRPC Fault";
return false;
}
@@ -383,15 +383,29 @@ namespace OpenSim.Services.Connectors.Hypergrid
// m_log.Debug(">> " + ((DictionaryEntry)o).Key + ":" + ((DictionaryEntry)o).Value);
try
{
+ if (hash == null)
+ {
+ m_log.ErrorFormat("[USER AGENT CONNECTOR]: Got null response from {0}! THIS IS BAAAAD", m_ServerURL);
+ reason = "Internal error 1";
+ return false;
+ }
bool success = false;
reason = string.Empty;
- Boolean.TryParse((string)hash["result"], out success);
+ if (hash.ContainsKey("result"))
+ Boolean.TryParse((string)hash["result"], out success);
+ else
+ {
+ reason = "Internal error 2";
+ m_log.WarnFormat("[USER AGENT CONNECTOR]: response from {0} does not have expected key 'result'", m_ServerURL);
+ }
return success;
}
catch (Exception e)
{
- m_log.Error("[HGrid]: Got exception while parsing GetEndPoint response " + e.StackTrace);
+ m_log.ErrorFormat("[HGrid]: Got exception on GetBoolResponse response.");
+ if (hash.ContainsKey("result") && hash["result"] != null)
+ m_log.ErrorFormat("Reply was ", (string)hash["result"]);
reason = "Exception: " + e.Message;
return false;
}
diff --git a/OpenSim/Tools/Configger/ConfigurationLoader.cs b/OpenSim/Tools/Configger/ConfigurationLoader.cs
index f82eb586ed..e74debbd17 100644
--- a/OpenSim/Tools/Configger/ConfigurationLoader.cs
+++ b/OpenSim/Tools/Configger/ConfigurationLoader.cs
@@ -241,16 +241,6 @@ namespace OpenSim.Tools.Configger
config.Set("EventQueue", true);
}
- {
- IConfig config = defaultConfig.Configs["Network"];
-
- if (null == config)
- config = defaultConfig.AddConfig("Network");
-
- config.Set("default_location_x", 1000);
- config.Set("default_location_y", 1000);
- }
-
return defaultConfig;
}