From 48f37339636f52392f698ae6036f970183ccae91 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 20:40:01 +0100
Subject: Fix http://opensimulator.org/mantis/view.php?id=4657 where
OpenSim.Grid.UserServer.exe fails on startup if no previous config probably
appears to occur because mono 2.4.2.3 (and possibly later) erroneously
returns a value of 0 for BufferWidth and BufferHeight in some circumstances
---
OpenSim/Framework/Console/LocalConsole.cs | 63 +++++++++++++++++++++++--------
OpenSim/Framework/Util.cs | 2 +-
2 files changed, 48 insertions(+), 17 deletions(-)
diff --git a/OpenSim/Framework/Console/LocalConsole.cs b/OpenSim/Framework/Console/LocalConsole.cs
index be936b6..a3036d0 100644
--- a/OpenSim/Framework/Console/LocalConsole.cs
+++ b/OpenSim/Framework/Console/LocalConsole.cs
@@ -38,7 +38,7 @@ namespace OpenSim.Framework.Console
{
///
/// A console that uses cursor control and color
- ///
+ ///
public class LocalConsole : CommandConsole
{
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -100,24 +100,40 @@ namespace OpenSim.Framework.Console
private int SetCursorTop(int top)
{
// From at least mono 2.4.2.3, window resizing can give mono an invalid row and column values. If we try
- // to set a cursor row position with a currently invalid column, mono will throw an exception.
- // Therefore, we need to make sure that the column position is valid first.
+ // to set a cursor row position with a currently invalid column, mono will throw an exception.
+ // Therefore, we need to make sure that the column position is valid first.
int left = System.Console.CursorLeft;
if (left < 0)
+ {
System.Console.CursorLeft = 0;
- else if (left >= System.Console.BufferWidth)
- System.Console.CursorLeft = System.Console.BufferWidth - 1;
+ }
+ else
+ {
+ int bw = System.Console.BufferWidth;
+
+ // On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
+ if (bw > 0 && left >= bw)
+ System.Console.CursorLeft = bw - 1;
+ }
if (top < 0)
+ {
top = 0;
- if (top >= System.Console.BufferHeight)
- top = System.Console.BufferHeight - 1;
+ }
+ else
+ {
+ int bh = System.Console.BufferHeight;
+
+ // On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
+ if (bh > 0 && top >= bh)
+ top = bh - 1;
+ }
System.Console.CursorTop = top;
return top;
- }
+ }
///
/// Set the cursor column.
@@ -129,23 +145,38 @@ namespace OpenSim.Framework.Console
///
///
/// The new cursor column.
- ///
+ ///
private int SetCursorLeft(int left)
{
// From at least mono 2.4.2.3, window resizing can give mono an invalid row and column values. If we try
- // to set a cursor column position with a currently invalid row, mono will throw an exception.
- // Therefore, we need to make sure that the row position is valid first.
+ // to set a cursor column position with a currently invalid row, mono will throw an exception.
+ // Therefore, we need to make sure that the row position is valid first.
int top = System.Console.CursorTop;
if (top < 0)
+ {
System.Console.CursorTop = 0;
- else if (top >= System.Console.BufferHeight)
- System.Console.CursorTop = System.Console.BufferHeight - 1;
+ }
+ else
+ {
+ int bh = System.Console.BufferHeight;
+ // On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
+ if (bh > 0 && top >= bh)
+ System.Console.CursorTop = bh - 1;
+ }
if (left < 0)
+ {
left = 0;
- if (left >= System.Console.BufferWidth)
- left = System.Console.BufferWidth - 1;
+ }
+ else
+ {
+ int bw = System.Console.BufferWidth;
+
+ // On Mono 2.4.2.3 (and possibly above), the buffer value is sometimes erroneously zero (Mantis 4657)
+ if (bw > 0 && left >= bw)
+ left = bw - 1;
+ }
System.Console.CursorLeft = left;
@@ -183,7 +214,7 @@ namespace OpenSim.Framework.Console
System.Console.Write("{0}", prompt);
SetCursorTop(new_y);
- SetCursorLeft(new_x);
+ SetCursorLeft(new_x);
}
}
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index 64f6118..802cb37 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1486,4 +1486,4 @@ namespace OpenSim.Framework
}
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From 9131a0d4a4ec24e3216c65cdf4b00af79c07a046 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 21:12:09 +0100
Subject: minor: stop datasnapshot issuing a warning log message if it's
disabled
---
OpenSim/Region/DataSnapshot/DataSnapshotManager.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs b/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs
index 6949d7c..9fc002b 100644
--- a/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs
+++ b/OpenSim/Region/DataSnapshot/DataSnapshotManager.cs
@@ -94,7 +94,7 @@ namespace OpenSim.Region.DataSnapshot
if (!m_configLoaded)
{
m_configLoaded = true;
- m_log.Info("[DATASNAPSHOT]: Loading configuration");
+ //m_log.Debug("[DATASNAPSHOT]: Loading configuration");
//Read from the config for options
lock (m_syncInit)
{
@@ -123,7 +123,7 @@ namespace OpenSim.Region.DataSnapshot
}
catch (Exception)
{
- m_log.Info("[DATASNAPSHOT]: Could not load configuration. DataSnapshot will be disabled.");
+ m_log.Warn("[DATASNAPSHOT]: Could not load configuration. DataSnapshot will be disabled.");
m_enabled = false;
return;
}
@@ -179,7 +179,7 @@ namespace OpenSim.Region.DataSnapshot
}
else
{
- m_log.Warn("[DATASNAPSHOT]: Data snapshot disabled, not adding scene to module (or anything else).");
+ //m_log.Debug("[DATASNAPSHOT]: Data snapshot disabled, not adding scene to module (or anything else).");
}
}
--
cgit v1.1
From 5459a90fc6b3864b90a10cd99e4e5a3a0e92d226 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 21:23:01 +0100
Subject: minor: stop irc bridge warning about not attached to regions if it's
not been turned on in the first place
---
OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
index e664b44..d49a489 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
@@ -109,7 +109,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
}
else
{
- m_log.WarnFormat("[IRC-Bridge] Not enabled. Connect for region {0} ignored", scene.RegionInfo.RegionName);
+ //m_log.DebugFormat("[IRC-Bridge] Not enabled. Connect for region {0} ignored", scene.RegionInfo.RegionName);
}
}
--
cgit v1.1
From cf4673585616e4b45f095ec5837c2554f40b85b3 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 21:39:27 +0100
Subject: add a missing initialization of the m_memoryCache in
XmlRpcGroupsServicesConnectorModule the lack of this caused me a
NullReferenceException when calling some groups methods directly though in
principle it would also fail in other situations
---
.../Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
index e7967d1..79b9a16 100644
--- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/XmlRpcGroupsServicesConnectorModule.cs
@@ -142,8 +142,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups
m_log.InfoFormat("[XMLRPC-GROUPS-CONNECTOR]: Groups Cache Timeout set to {0}.", m_cacheTimeout);
}
-
// If we got all the config options we need, lets start'er'up
+ m_memoryCache = new ExpiringCache();
m_connectorEnabled = true;
}
}
--
cgit v1.1
From bf3956aeb0a44d0dd455e330234fcf0e18f5ea43 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 22:29:11 +0100
Subject: Add --skip-assets option to load oar. This allows you to load an oar
without loading its assets. This is useful if you know that the required
assets are already in the asset service, since loading without assets is
quicker. This option will become more useful when the ability to save oars
without assets is added, which should happen fairly soon. At this point
there will also be better documentation.
---
OpenSim/Region/Application/OpenSim.cs | 5 +--
.../World/Archiver/ArchiveReadRequest.cs | 40 ++++++++++++++--------
.../CoreModules/World/Archiver/ArchiverModule.cs | 19 +++++-----
.../World/Archiver/Tests/ArchiverTests.cs | 2 +-
.../Framework/Interfaces/IRegionArchiverModule.cs | 12 +++++--
5 files changed, 50 insertions(+), 28 deletions(-)
mode change 100755 => 100644 OpenSim/Region/Application/OpenSim.cs
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
old mode 100755
new mode 100644
index 38b2084..1395030
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -251,8 +251,9 @@ namespace OpenSim
"Save named prim to XML2", SavePrimsXml2);
m_console.Commands.AddCommand("region", false, "load oar",
- "load oar [--merge] ",
- "Load a region's data from OAR archive", LoadOar);
+ "load oar [--merge] [--skip-assets] ",
+ "Load a region's data from OAR archive. --merge will merge the oar with the existing scene. --skip-assets will load the oar but ignore the assets it contains",
+ LoadOar);
m_console.Commands.AddCommand("region", false, "save oar",
"save oar ",
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index b1b2336f8..cde7c93 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -53,25 +53,30 @@ namespace OpenSim.Region.CoreModules.World.Archiver
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- private static ASCIIEncoding m_asciiEncoding = new ASCIIEncoding();
- private static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
+ protected static ASCIIEncoding m_asciiEncoding = new ASCIIEncoding();
+ protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
- private Scene m_scene;
- private Stream m_loadStream;
- private Guid m_requestId;
- private string m_errorMessage;
+ protected Scene m_scene;
+ protected Stream m_loadStream;
+ protected Guid m_requestId;
+ protected string m_errorMessage;
///
/// Should the archive being loaded be merged with what is already on the region?
///
- private bool m_merge;
+ protected bool m_merge;
+
+ ///
+ /// Should we ignore any assets when reloading the archive?
+ ///
+ protected bool m_skipAssets;
///
/// Used to cache lookups for valid uuids.
///
private IDictionary m_validUserUuids = new Dictionary();
- public ArchiveReadRequest(Scene scene, string loadPath, bool merge, Guid requestId)
+ public ArchiveReadRequest(Scene scene, string loadPath, bool merge, bool skipAssets, Guid requestId)
{
m_scene = scene;
@@ -89,14 +94,16 @@ namespace OpenSim.Region.CoreModules.World.Archiver
m_errorMessage = String.Empty;
m_merge = merge;
+ m_skipAssets = skipAssets;
m_requestId = requestId;
}
- public ArchiveReadRequest(Scene scene, Stream loadStream, bool merge, Guid requestId)
+ public ArchiveReadRequest(Scene scene, Stream loadStream, bool merge, bool skipAssets, Guid requestId)
{
m_scene = scene;
m_loadStream = loadStream;
m_merge = merge;
+ m_skipAssets = skipAssets;
m_requestId = requestId;
}
@@ -135,7 +142,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
{
serialisedSceneObjects.Add(m_utf8Encoding.GetString(data));
}
- else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH))
+ else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH) && !m_skipAssets)
{
if (LoadAsset(filePath, data))
successfulAssetRestores++;
@@ -178,12 +185,15 @@ namespace OpenSim.Region.CoreModules.World.Archiver
archive.Close();
}
- m_log.InfoFormat("[ARCHIVER]: Restored {0} assets", successfulAssetRestores);
-
- if (failedAssetRestores > 0)
+ if (!m_skipAssets)
{
- m_log.ErrorFormat("[ARCHIVER]: Failed to load {0} assets", failedAssetRestores);
- m_errorMessage += String.Format("Failed to load {0} assets", failedAssetRestores);
+ m_log.InfoFormat("[ARCHIVER]: Restored {0} assets", successfulAssetRestores);
+
+ if (failedAssetRestores > 0)
+ {
+ m_log.ErrorFormat("[ARCHIVER]: Failed to load {0} assets", failedAssetRestores);
+ m_errorMessage += String.Format("Failed to load {0} assets", failedAssetRestores);
+ }
}
if (!m_merge)
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
index fc8d4e1..82ede01 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiverModule.cs
@@ -94,8 +94,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver
public void HandleLoadOarConsoleCommand(string module, string[] cmdparams)
{
bool mergeOar = false;
+ bool skipAssets = false;
OptionSet options = new OptionSet().Add("m|merge", delegate (string v) { mergeOar = v != null; });
+ options.Add("s|skip-assets", delegate (string v) { skipAssets = v != null; });
+
List mainParams = options.Parse(cmdparams);
// m_log.DebugFormat("MERGE OAR IS [{0}]", mergeOar);
@@ -105,11 +108,11 @@ namespace OpenSim.Region.CoreModules.World.Archiver
if (mainParams.Count > 2)
{
- DearchiveRegion(mainParams[2], mergeOar, Guid.Empty);
+ DearchiveRegion(mainParams[2], mergeOar, skipAssets, Guid.Empty);
}
else
{
- DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME, mergeOar, Guid.Empty);
+ DearchiveRegion(DEFAULT_OAR_BACKUP_FILENAME, mergeOar, skipAssets, Guid.Empty);
}
}
@@ -154,25 +157,25 @@ namespace OpenSim.Region.CoreModules.World.Archiver
public void DearchiveRegion(string loadPath)
{
- DearchiveRegion(loadPath, false, Guid.Empty);
+ DearchiveRegion(loadPath, false, false, Guid.Empty);
}
- public void DearchiveRegion(string loadPath, bool merge, Guid requestId)
+ public void DearchiveRegion(string loadPath, bool merge, bool skipAssets, Guid requestId)
{
m_log.InfoFormat(
"[ARCHIVER]: Loading archive to region {0} from {1}", m_scene.RegionInfo.RegionName, loadPath);
- new ArchiveReadRequest(m_scene, loadPath, merge, requestId).DearchiveRegion();
+ new ArchiveReadRequest(m_scene, loadPath, merge, skipAssets, requestId).DearchiveRegion();
}
public void DearchiveRegion(Stream loadStream)
{
- DearchiveRegion(loadStream, false, Guid.Empty);
+ DearchiveRegion(loadStream, false, false, Guid.Empty);
}
- public void DearchiveRegion(Stream loadStream, bool merge, Guid requestId)
+ public void DearchiveRegion(Stream loadStream, bool merge, bool skipAssets, Guid requestId)
{
- new ArchiveReadRequest(m_scene, loadStream, merge, requestId).DearchiveRegion();
+ new ArchiveReadRequest(m_scene, loadStream, merge, skipAssets, requestId).DearchiveRegion();
}
}
}
diff --git a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
index de16d89..624dc22 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/Tests/ArchiverTests.cs
@@ -442,7 +442,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver.Tests
byte[] archive = archiveWriteStream.ToArray();
MemoryStream archiveReadStream = new MemoryStream(archive);
- m_archiverModule.DearchiveRegion(archiveReadStream, true, Guid.Empty);
+ m_archiverModule.DearchiveRegion(archiveReadStream, true, false, Guid.Empty);
SceneObjectPart object1Existing = m_scene.GetSceneObjectPart(part1.Name);
Assert.That(object1Existing, Is.Not.Null, "object1 was not present after merge");
diff --git a/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs b/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs
index 991d60c..89e59d0 100644
--- a/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IRegionArchiverModule.cs
@@ -90,8 +90,12 @@ namespace OpenSim.Region.Framework.Interfaces
/// If true, the loaded region merges with the existing one rather than replacing it. Any terrain or region
/// settings in the archive will be ignored.
///
+ ///
+ /// If true, the archive is loaded without loading any assets contained within it. This is useful if the
+ /// assets are already known to be present in the grid's asset service.
+ ///
/// If supplied, this request Id is later returned in the saved event
- void DearchiveRegion(string loadPath, bool merge, Guid requestId);
+ void DearchiveRegion(string loadPath, bool merge, bool skipAssets, Guid requestId);
///
/// Dearchive a region from a stream. This replaces the existing scene.
@@ -113,7 +117,11 @@ namespace OpenSim.Region.Framework.Interfaces
/// If true, the loaded region merges with the existing one rather than replacing it. Any terrain or region
/// settings in the archive will be ignored.
///
+ ///
+ /// If true, the archive is loaded without loading any assets contained within it. This is useful if the
+ /// assets are already known to be present in the grid's asset service.
+ /// If supplied, this request Id is later returned in the saved event
- void DearchiveRegion(Stream loadStream, bool merge, Guid requestId);
+ void DearchiveRegion(Stream loadStream, bool merge, bool skipAssets, Guid requestId);
}
}
--
cgit v1.1
From e9926d13cf72ede89686147b38425fea806caeb0 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 22:38:42 +0100
Subject: minor: use the static ascii and utf8 encodings instead of
instantiating our own
---
OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index cde7c93..55028d0 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -53,9 +53,6 @@ namespace OpenSim.Region.CoreModules.World.Archiver
{
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
- protected static ASCIIEncoding m_asciiEncoding = new ASCIIEncoding();
- protected static UTF8Encoding m_utf8Encoding = new UTF8Encoding();
-
protected Scene m_scene;
protected Stream m_loadStream;
protected Guid m_requestId;
@@ -140,7 +137,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
if (filePath.StartsWith(ArchiveConstants.OBJECTS_PATH))
{
- serialisedSceneObjects.Add(m_utf8Encoding.GetString(data));
+ serialisedSceneObjects.Add(Encoding.UTF8.GetString(data));
}
else if (filePath.StartsWith(ArchiveConstants.ASSETS_PATH) && !m_skipAssets)
{
@@ -162,7 +159,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
}
else if (!m_merge && filePath.StartsWith(ArchiveConstants.LANDDATA_PATH))
{
- serialisedParcels.Add(m_utf8Encoding.GetString(data));
+ serialisedParcels.Add(Encoding.UTF8.GetString(data));
}
else if (filePath == ArchiveConstants.CONTROL_FILE_PATH)
{
@@ -551,7 +548,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
XmlParserContext context = new XmlParserContext(null, nsmgr, null, XmlSpace.None);
XmlTextReader xtr
- = new XmlTextReader(m_asciiEncoding.GetString(data), XmlNodeType.Document, context);
+ = new XmlTextReader(Encoding.ASCII.GetString(data), XmlNodeType.Document, context);
RegionSettings currentRegionSettings = m_scene.RegionInfo.RegionSettings;
--
cgit v1.1
From 17d023ba5bb54f832adc8c0d4ba79b2a0e67c434 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 22:54:25 +0100
Subject: refactor: crudely move the RezMultipleAttachments() method into the
AttachmentsModule
---
.../CoreModules/Avatar/Attachments/AttachmentsModule.cs | 12 ++++++++++++
OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs | 12 ++++++++++++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 10 ----------
OpenSim/Region/Framework/Scenes/Scene.cs | 8 ++++----
4 files changed, 28 insertions(+), 14 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 23828ef..37f790d 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -30,6 +30,7 @@ using System.Reflection;
using log4net;
using Nini.Config;
using OpenMetaverse;
+using OpenMetaverse.Packets;
using OpenSim.Framework;
using OpenSim.Region.Framework;
using OpenSim.Region.Framework.Interfaces;
@@ -169,6 +170,17 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
return true;
}
+ public void RezMultipleAttachmentsFromInventory(
+ IClientAPI remoteClient,
+ RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
+ RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects)
+ {
+ foreach (RezMultipleAttachmentsFromInvPacket.ObjectDataBlock obj in objects)
+ {
+ RezSingleAttachmentFromInventory(remoteClient, obj.ItemID, obj.AttachmentPt);
+ }
+ }
+
public UUID RezSingleAttachmentFromInventory(IClientAPI remoteClient, UUID itemID, uint AttachmentPt)
{
m_log.DebugFormat("[ATTACHMENTS MODULE]: Rezzing single attachment from item {0} for {1}", itemID, remoteClient.Name);
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 0222b02..77e9a7e 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -27,6 +27,7 @@
using System;
using OpenMetaverse;
+using OpenMetaverse.Packets;
using OpenSim.Framework;
using OpenSim.Region.Framework.Scenes;
@@ -82,6 +83,17 @@ namespace OpenSim.Region.Framework.Interfaces
IClientAPI remoteClient, UUID itemID, uint AttachmentPt, bool updateInventoryStatus);
///
+ /// Rez multiple attachments from a user's inventory
+ ///
+ ///
+ ///
+ ///
+ void RezMultipleAttachmentsFromInventory(
+ IClientAPI remoteClient,
+ RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
+ RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects);
+
+ ///
/// Update the user inventory to the attachment of an item
///
///
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 7c68ef4..4a286ac 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -35,7 +35,6 @@ using OpenMetaverse;
using OpenMetaverse.Packets;
using log4net;
using OpenSim.Framework;
-
using OpenSim.Region.Framework;
using OpenSim.Region.Framework.Interfaces;
using OpenSim.Region.Framework.Scenes.Serialization;
@@ -1875,15 +1874,6 @@ namespace OpenSim.Region.Framework.Scenes
EventManager.TriggerOnAttach(localID, itemID, avatarID);
}
- public void RezMultipleAttachments(IClientAPI remoteClient, RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
- RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects)
- {
- foreach (RezMultipleAttachmentsFromInvPacket.ObjectDataBlock obj in objects)
- {
- AttachmentsModule.RezSingleAttachmentFromInventory(remoteClient, obj.ItemID, obj.AttachmentPt);
- }
- }
-
public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient)
{
SceneObjectPart part = GetSceneObjectPart(itemID);
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 685a678..d4da2cb 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2769,13 +2769,13 @@ namespace OpenSim.Region.Framework.Scenes
}
public virtual void SubscribeToClientAttachmentEvents(IClientAPI client)
- {
- client.OnRezMultipleAttachmentsFromInv += RezMultipleAttachments;
+ {
client.OnObjectDetach += m_sceneGraph.DetachObject;
if (AttachmentsModule != null)
{
client.OnRezSingleAttachmentFromInv += AttachmentsModule.RezSingleAttachmentFromInventory;
+ client.OnRezMultipleAttachmentsFromInv += AttachmentsModule.RezMultipleAttachmentsFromInventory;
client.OnObjectAttach += AttachmentsModule.AttachObject;
client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory;
}
@@ -2926,12 +2926,12 @@ namespace OpenSim.Region.Framework.Scenes
public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client)
{
- client.OnRezMultipleAttachmentsFromInv -= RezMultipleAttachments;
client.OnObjectDetach -= m_sceneGraph.DetachObject;
if (AttachmentsModule != null)
{
- client.OnRezSingleAttachmentFromInv -= AttachmentsModule.RezSingleAttachmentFromInventory;
+ client.OnRezSingleAttachmentFromInv -= AttachmentsModule.RezSingleAttachmentFromInventory;
+ client.OnRezMultipleAttachmentsFromInv -= AttachmentsModule.RezMultipleAttachmentsFromInventory;
client.OnObjectAttach -= AttachmentsModule.AttachObject;
client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory;
}
--
cgit v1.1
From 45563e20e0167cd0349503919a96658ca119d11e Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 22:57:44 +0100
Subject: minor: correctly print out missing item id when it can't be found
rather than a NullReferenceException
---
.../ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs | 5 ++++-
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 1 -
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
index e97d21f..a2f26d5 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/LocalInventoryServiceConnector.cs
@@ -311,10 +311,13 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory
{
// m_log.DebugFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Requesting inventory item {0}", item.ID);
+ UUID requestedItemId = item.ID;
+
item = m_InventoryService.GetItem(item);
if (null == item)
- m_log.ErrorFormat("[LOCAL INVENTORY SERVICES CONNECTOR]: Could not find item with id {0}", item.ID);
+ m_log.ErrorFormat(
+ "[LOCAL INVENTORY SERVICES CONNECTOR]: Could not find item with id {0}", requestedItemId);
return item;
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 4a286ac..a90c4b3 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -471,7 +471,6 @@ namespace OpenSim.Region.Framework.Scenes
return null;
}
-
if (recipientParentFolderId == UUID.Zero)
{
InventoryFolderBase recipientRootFolder = InventoryService.GetRootFolder(recipientId);
--
cgit v1.1
From b3e9dd4fc26d772ba61a0751347caf1daf2dd39f Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Fri, 16 Apr 2010 15:10:57 -0700
Subject: Bug fix in SQLite/SQLiteUserAccountData.cs: Missing'(' in one of the
SQL statements.
---
OpenSim/Data/SQLite/SQLiteUserAccountData.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs
index 50e8c23..67cf716 100644
--- a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs
+++ b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs
@@ -66,7 +66,7 @@ namespace OpenSim.Data.SQLite
if (words.Length == 1)
{
- cmd.CommandText = String.Format("select * from {0} where ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')",
+ cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')",
m_Realm, scopeID.ToString(), words[0]);
}
else
--
cgit v1.1
From 57c293d604874c8033a602d1cea6f5250769ff14 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 23:15:13 +0100
Subject: refactor: crudely move DetachSingleAttachmentToGround() over to the
AttachmentsModule
---
.../Avatar/Attachments/AttachmentsModule.cs | 32 ++++++++++++++++++++++
.../Framework/Interfaces/IAttachmentsModule.cs | 7 +++++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 30 --------------------
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 4 +--
4 files changed, 40 insertions(+), 33 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 37f790d..f8fb7ca 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -341,6 +341,38 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
DetachSingleAttachmentToInv(itemID, remoteClient);
}
+ public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient)
+ {
+ SceneObjectPart part = m_scene.GetSceneObjectPart(itemID);
+ if (part == null || part.ParentGroup == null)
+ return;
+
+ UUID inventoryID = part.ParentGroup.GetFromItemID();
+
+ ScenePresence presence;
+ if (m_scene.TryGetScenePresence(remoteClient.AgentId, out presence))
+ {
+ if (!m_scene.Permissions.CanRezObject(
+ part.ParentGroup.Children.Count, remoteClient.AgentId, presence.AbsolutePosition))
+ return;
+
+ presence.Appearance.DetachAttachment(itemID);
+
+ if (m_scene.AvatarFactory != null)
+ {
+ m_scene.AvatarFactory.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
+ }
+ part.ParentGroup.DetachToGround();
+
+ List uuids = new List();
+ uuids.Add(inventoryID);
+ m_scene.InventoryService.DeleteItems(remoteClient.AgentId, uuids);
+ remoteClient.SendRemoveInventoryItem(inventoryID);
+ }
+
+ m_scene.EventManager.TriggerOnAttach(part.ParentGroup.LocalId, itemID, UUID.Zero);
+ }
+
// What makes this method odd and unique is it tries to detach using an UUID.... Yay for standards.
// To LocalId or UUID, *THAT* is the question. How now Brown UUID??
protected void DetachSingleAttachmentToInv(UUID itemID, IClientAPI remoteClient)
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index 77e9a7e..d43ce1f 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -92,6 +92,13 @@ namespace OpenSim.Region.Framework.Interfaces
IClientAPI remoteClient,
RezMultipleAttachmentsFromInvPacket.HeaderDataBlock header,
RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects);
+
+ ///
+ /// Detach the given item to the ground.
+ ///
+ ///
+ ///
+ void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient);
///
/// Update the user inventory to the attachment of an item
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index a90c4b3..e3f1636 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1873,36 +1873,6 @@ namespace OpenSim.Region.Framework.Scenes
EventManager.TriggerOnAttach(localID, itemID, avatarID);
}
- public void DetachSingleAttachmentToGround(UUID itemID, IClientAPI remoteClient)
- {
- SceneObjectPart part = GetSceneObjectPart(itemID);
- if (part == null || part.ParentGroup == null)
- return;
-
- UUID inventoryID = part.ParentGroup.GetFromItemID();
-
- ScenePresence presence;
- if (TryGetScenePresence(remoteClient.AgentId, out presence))
- {
- if (!Permissions.CanRezObject(part.ParentGroup.Children.Count, remoteClient.AgentId, presence.AbsolutePosition))
- return;
-
- presence.Appearance.DetachAttachment(itemID);
- IAvatarFactory ava = RequestModuleInterface();
- if (ava != null)
- {
- ava.UpdateDatabase(remoteClient.AgentId, presence.Appearance);
- }
- part.ParentGroup.DetachToGround();
-
- List uuids = new List();
- uuids.Add(inventoryID);
- InventoryService.DeleteItems(remoteClient.AgentId, uuids);
- remoteClient.SendRemoveInventoryItem(inventoryID);
- }
- SendAttachEvent(part.ParentGroup.LocalId, itemID, UUID.Zero);
- }
-
public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
{
EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID);
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 23a4ee9..89eb54d 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -443,9 +443,7 @@ namespace OpenSim.Region.Framework.Scenes
{
SceneObjectGroup group = GetGroupByPrim(objectLocalID);
if (group != null)
- {
- m_parentScene.DetachSingleAttachmentToGround(group.UUID, remoteClient);
- }
+ m_parentScene.AttachmentsModule.DetachSingleAttachmentToGround(group.UUID, remoteClient);
}
protected internal void DetachObject(uint objectLocalID, IClientAPI remoteClient)
--
cgit v1.1
From ab3af43d5e363a47d103f75f8ee346f476dbe15d Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Fri, 16 Apr 2010 23:29:36 +0100
Subject: refactor: remove now unused internal method SendAttachEvent()
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 5 -----
1 file changed, 5 deletions(-)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index e3f1636..7661068 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1868,11 +1868,6 @@ namespace OpenSim.Region.Framework.Scenes
EventManager.TriggerStopScript(part.LocalId, itemID);
}
- internal void SendAttachEvent(uint localID, UUID itemID, UUID avatarID)
- {
- EventManager.TriggerOnAttach(localID, itemID, avatarID);
- }
-
public void GetScriptRunning(IClientAPI controllingClient, UUID objectID, UUID itemID)
{
EventManager.TriggerGetScriptRunning(controllingClient, objectID, itemID);
--
cgit v1.1
From 26e38842372e934937be36a21d8a99742cd485fe Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sat, 17 Apr 2010 00:00:45 +0100
Subject: refactor: move DeatchObject() into the AttachmentsModule
---
.../Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | 10 ++++++++++
OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs | 10 ++++++++++
OpenSim/Region/Framework/Scenes/Scene.cs | 10 ++++------
3 files changed, 24 insertions(+), 6 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index f8fb7ca..c87a383 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -323,6 +323,16 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
}
}
+ public void DetachObject(uint objectLocalID, IClientAPI remoteClient)
+ {
+ SceneObjectGroup group = m_scene.GetGroupByPrim(objectLocalID);
+ if (group != null)
+ {
+ //group.DetachToGround();
+ ShowDetachInUserInventory(group.GetFromItemID(), remoteClient);
+ }
+ }
+
public void ShowDetachInUserInventory(UUID itemID, IClientAPI remoteClient)
{
ScenePresence presence;
diff --git a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
index d43ce1f..f8af367 100644
--- a/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IAttachmentsModule.cs
@@ -94,6 +94,16 @@ namespace OpenSim.Region.Framework.Interfaces
RezMultipleAttachmentsFromInvPacket.ObjectDataBlock[] objects);
///
+ /// Detach an object from the avatar.
+ ///
+ ///
+ /// This method is called in response to a client's detach request, so we only update the information in
+ /// inventory
+ ///
+ ///
+ void DetachObject(uint objectLocalID, IClientAPI remoteClient);
+
+ ///
/// Detach the given item to the ground.
///
///
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index d4da2cb..a34f57e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2769,14 +2769,13 @@ namespace OpenSim.Region.Framework.Scenes
}
public virtual void SubscribeToClientAttachmentEvents(IClientAPI client)
- {
- client.OnObjectDetach += m_sceneGraph.DetachObject;
-
+ {
if (AttachmentsModule != null)
{
client.OnRezSingleAttachmentFromInv += AttachmentsModule.RezSingleAttachmentFromInventory;
client.OnRezMultipleAttachmentsFromInv += AttachmentsModule.RezMultipleAttachmentsFromInventory;
client.OnObjectAttach += AttachmentsModule.AttachObject;
+ client.OnObjectDetach += AttachmentsModule.DetachObject;
client.OnDetachAttachmentIntoInv += AttachmentsModule.ShowDetachInUserInventory;
}
}
@@ -2925,14 +2924,13 @@ namespace OpenSim.Region.Framework.Scenes
}
public virtual void UnSubscribeToClientAttachmentEvents(IClientAPI client)
- {
- client.OnObjectDetach -= m_sceneGraph.DetachObject;
-
+ {
if (AttachmentsModule != null)
{
client.OnRezSingleAttachmentFromInv -= AttachmentsModule.RezSingleAttachmentFromInventory;
client.OnRezMultipleAttachmentsFromInv -= AttachmentsModule.RezMultipleAttachmentsFromInventory;
client.OnObjectAttach -= AttachmentsModule.AttachObject;
+ client.OnObjectDetach -= AttachmentsModule.DetachObject;
client.OnDetachAttachmentIntoInv -= AttachmentsModule.ShowDetachInUserInventory;
}
}
--
cgit v1.1
From 930d3745256ced37afb2d91817eba941d06a50b0 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Fri, 16 Apr 2010 16:36:44 -0700
Subject: Expose Delete at IUserAccountData interface. It was there already. No
changes in IUserAccountService, just the data layer.
---
OpenSim/Data/IUserAccountData.cs | 1 +
OpenSim/Data/Null/NullUserAccountData.cs | 21 +++++++++++++++++++++
2 files changed, 22 insertions(+)
diff --git a/OpenSim/Data/IUserAccountData.cs b/OpenSim/Data/IUserAccountData.cs
index 6ee5995..906ba6c 100644
--- a/OpenSim/Data/IUserAccountData.cs
+++ b/OpenSim/Data/IUserAccountData.cs
@@ -48,6 +48,7 @@ namespace OpenSim.Data
{
UserAccountData[] Get(string[] fields, string[] values);
bool Store(UserAccountData data);
+ bool Delete(string field, string val);
UserAccountData[] GetUsers(UUID scopeID, string query);
}
}
diff --git a/OpenSim/Data/Null/NullUserAccountData.cs b/OpenSim/Data/Null/NullUserAccountData.cs
index fc2c5d5..9eb94e6 100644
--- a/OpenSim/Data/Null/NullUserAccountData.cs
+++ b/OpenSim/Data/Null/NullUserAccountData.cs
@@ -135,5 +135,26 @@ namespace OpenSim.Data.Null
return result;
}
+ public bool Delete(string field, string val)
+ {
+ // Only delete by PrincipalID
+ if (field.Equals("PrincipalID"))
+ {
+ UUID uuid = UUID.Zero;
+ if (UUID.TryParse(val, out uuid) && m_DataByUUID.ContainsKey(uuid))
+ {
+ UserAccountData account = m_DataByUUID[uuid];
+ m_DataByUUID.Remove(uuid);
+ if (m_DataByName.ContainsKey(account.FirstName + " " + account.LastName))
+ m_DataByName.Remove(account.FirstName + " " + account.LastName);
+ if (account.Data.ContainsKey("Email") && account.Data["Email"] != string.Empty && m_DataByEmail.ContainsKey(account.Data["Email"]))
+ m_DataByEmail.Remove(account.Data["Email"]);
+
+ return true;
+ }
+ }
+
+ return false;
+ }
}
}
--
cgit v1.1
From 2597a3406c10de6898f1a66e469c3656aa294f43 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Fri, 16 Apr 2010 17:43:15 -0700
Subject: Bug fix: UserAccounts in SQLite was missing the primary key
constraint.
---
OpenSim/Data/SQLite/Resources/001_UserAccount.sql | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Data/SQLite/Resources/001_UserAccount.sql b/OpenSim/Data/SQLite/Resources/001_UserAccount.sql
index f9bf24c..c38d9a7 100644
--- a/OpenSim/Data/SQLite/Resources/001_UserAccount.sql
+++ b/OpenSim/Data/SQLite/Resources/001_UserAccount.sql
@@ -2,7 +2,7 @@
-- useraccounts table
CREATE TABLE UserAccounts (
- PrincipalID CHAR(36) NOT NULL,
+ PrincipalID CHAR(36) primary key,
ScopeID CHAR(36) NOT NULL,
FirstName VARCHAR(64) NOT NULL,
LastName VARCHAR(64) NOT NULL,
--
cgit v1.1
From 4e1cbd1bf3f2a7d4e3dd8861e196820f35cddec9 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Fri, 16 Apr 2010 18:04:20 -0700
Subject: One more bug fix in sqlite sql statements.
---
OpenSim/Data/SQLite/SQLiteAuthenticationData.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
index 2c28375..aa10734 100644
--- a/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteAuthenticationData.cs
@@ -235,7 +235,7 @@ namespace OpenSim.Data.SQLite
if (System.Environment.TickCount - m_LastExpire > 30000)
DoExpire();
- SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now, 'localtime', '+" + lifetime.ToString() +
+ SqliteCommand cmd = new SqliteCommand("update tokens set validity = datetime('now', 'localtime', '+" + lifetime.ToString() +
" minutes') where UUID = '" + principalID.ToString() + "' and token = '" + token + "' and validity > datetime('now', 'localtime')");
if (ExecuteNonQuery(cmd, m_Connection) > 0)
--
cgit v1.1
From 7ef6dc2bac4f25368d969f487799c2bc49c33c36 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Sun, 18 Apr 2010 19:19:50 +0100
Subject: Slightly tweak README to account for the fact that first-time
standalone users may effectively set up their avatar as 'master avatar' in
the region configuration stage.
---
README.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.txt b/README.txt
index ed59bf5..f1a71be 100644
--- a/README.txt
+++ b/README.txt
@@ -59,7 +59,8 @@ Once you are presented with a prompt that looks like:
You have successfully started OpenSim.
-Before you can log in you will need to create a user account. You can do
+Before you can log in you will need to create a user account if you didn't already create
+your user as the "Master Avatar" during the region configuration stage. You can do
this by running the "create user" command on the OpenSim console. This will
ask you a series of questions such as first name, last name and password.
--
cgit v1.1
From 21cad5d3ac68ceb4ac48346835ac087ecb107446 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 19 Apr 2010 06:29:26 +0100
Subject: All scripts are now created suspended and are only unsuspended when
the object is fully rezzed and all scripts in it are instantiated. This
ensures that link messages will not be lost on rez/region crossing and makes
heavily scripted objects reliable.
---
.../Avatar/Attachments/AttachmentsModule.cs | 3 ++-
.../InventoryAccess/InventoryAccessModule.cs | 1 +
.../World/Archiver/ArchiveReadRequest.cs | 1 +
.../Framework/Interfaces/IEntityInventory.cs | 1 +
.../Region/Framework/Interfaces/IScriptModule.cs | 8 +++++++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 ++
OpenSim/Region/Framework/Scenes/Scene.cs | 2 +-
OpenSim/Region/Framework/Scenes/SceneGraph.cs | 1 +
.../Framework/Scenes/SceneObjectGroup.Inventory.cs | 8 +++++++
.../Framework/Scenes/SceneObjectPartInventory.cs | 25 +++++++++++++++++++++-
.../Scenes/Serialization/SceneXmlLoader.cs | 1 +
.../ScriptEngine/Interfaces/IScriptInstance.cs | 3 +++
.../ScriptEngine/Shared/Instance/ScriptInstance.cs | 14 ++++++++++++
OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 18 ++++++++++++++++
14 files changed, 85 insertions(+), 3 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index c87a383..77e73fb 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -250,6 +250,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
itemID, remoteClient.Name, AttachmentPt);
}
+ objatt.ResumeScripts();
return objatt;
}
@@ -413,4 +414,4 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
}
}
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 16e05b7..32a0df9 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -621,6 +621,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
}
}
+ rootPart.ParentGroup.ResumeScripts();
return rootPart.ParentGroup;
}
}
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 55028d0..c52f029 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -284,6 +284,7 @@ namespace OpenSim.Region.CoreModules.World.Archiver
{
sceneObjectsLoadedCount++;
sceneObject.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, 0);
+ sceneObject.ResumeScripts();
}
}
diff --git a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
index f58904f..2b90960 100644
--- a/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
+++ b/OpenSim/Region/Framework/Interfaces/IEntityInventory.cs
@@ -74,6 +74,7 @@ namespace OpenSim.Region.Framework.Interfaces
void CreateScriptInstances(int startParam, bool postOnRez, string engine, int stateSource);
ArrayList GetScriptErrors(UUID itemID);
+ void ResumeScripts();
///
/// Stop all the scripts in this entity.
diff --git a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
index e90b300..fecdd1b 100644
--- a/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IScriptModule.cs
@@ -41,6 +41,14 @@ namespace OpenSim.Region.Framework.Interfaces
bool PostScriptEvent(UUID itemID, string name, Object[] args);
bool PostObjectEvent(UUID itemID, string name, Object[] args);
+ // Suspend ALL scripts in a given scene object. The item ID
+ // is the UUID of a SOG, and the method acts on all contained
+ // scripts. This is different from the suspend/resume that
+ // can be issued by a client.
+ //
+ void SuspendScript(UUID itemID);
+ void ResumeScript(UUID itemID);
+
ArrayList GetScriptErrors(UUID itemID);
}
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 7661068..435026c 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -63,6 +63,7 @@ namespace OpenSim.Region.Framework.Scenes
if (group is SceneObjectGroup)
{
((SceneObjectGroup) group).CreateScriptInstances(0, false, DefaultScriptEngine, 0);
+ ((SceneObjectGroup) group).ResumeScripts();
}
}
}
@@ -218,6 +219,7 @@ namespace OpenSim.Region.Framework.Scenes
{
remoteClient.SendAgentAlertMessage("Script saved", false);
}
+ part.ParentGroup.ResumeScripts();
return errors;
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index a34f57e..57587be 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1131,7 +1131,6 @@ namespace OpenSim.Region.Framework.Scenes
{
if (m_scripts_enabled != !ScriptEngine)
{
- // Tedd! Here's the method to disable the scripting engine!
if (ScriptEngine)
{
m_log.Info("Stopping all Scripts in Scene");
@@ -1153,6 +1152,7 @@ namespace OpenSim.Region.Framework.Scenes
if (ent is SceneObjectGroup)
{
((SceneObjectGroup)ent).CreateScriptInstances(0, false, DefaultScriptEngine, 0);
+ ((SceneObjectGroup)ent).ResumeScripts();
}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
index 89eb54d..1421d0e 100644
--- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs
@@ -1755,6 +1755,7 @@ namespace OpenSim.Region.Framework.Scenes
copy.CreateScriptInstances(0, false, m_parentScene.DefaultScriptEngine, 0);
copy.HasGroupChanged = true;
copy.ScheduleGroupForFullUpdate();
+ copy.ResumeScripts();
// required for physics to update it's position
copy.AbsolutePosition = copy.AbsolutePosition;
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
index 4034744..f7e46af 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.Inventory.cs
@@ -416,5 +416,13 @@ namespace OpenSim.Region.Framework.Scenes
scriptModule.SetXMLState(itemID, n.OuterXml);
}
}
+
+ public void ResumeScripts()
+ {
+ foreach (SceneObjectPart part in m_parts.Values)
+ {
+ part.Inventory.ResumeScripts();
+ }
+ }
}
}
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 2e13f90..2b6be29 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -1042,5 +1042,28 @@ namespace OpenSim.Region.Framework.Scenes
return ret;
}
+
+ public void ResumeScripts()
+ {
+ IScriptModule[] engines = m_part.ParentGroup.Scene.RequestModuleInterfaces();
+ if (engines == null)
+ return;
+
+
+ lock (m_items)
+ {
+ foreach (TaskInventoryItem item in m_items.Values)
+ {
+ if (item.InvType == (int)InventoryType.LSL)
+ {
+ foreach (IScriptModule engine in engines)
+ {
+ if (engine != null)
+ engine.ResumeScript(item.ItemID);
+ }
+ }
+ }
+ }
+ }
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
index cf0f345..b6677f0 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneXmlLoader.cs
@@ -182,6 +182,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
foreach (SceneObjectGroup sceneObject in sceneObjects)
{
sceneObject.CreateScriptInstances(0, true, scene.DefaultScriptEngine, 0);
+ sceneObject.ResumeScripts();
}
}
diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs
index ae148a9..9f6ea35 100644
--- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs
@@ -81,6 +81,9 @@ namespace OpenSim.Region.ScriptEngine.Interfaces
void PostEvent(EventParams data);
+ void Suspend();
+ void Resume();
+
///
/// Process the next event queued for this script
///
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
index d30d2dc..74f25aa 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
@@ -95,6 +95,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
private bool m_startedFromSavedState;
private UUID m_CurrentStateHash;
private UUID m_RegionID;
+ private bool m_Suspended = true;
private Dictionary, KeyValuePair>
m_LineMap;
@@ -638,6 +639,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
///
public object EventProcessor()
{
+ if (m_Suspended)
+ return 0;
+
lock (m_Script)
{
EventParams data = null;
@@ -1011,5 +1015,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
{
get { return m_RegionID; }
}
+
+ public void Suspend()
+ {
+ m_Suspended = true;
+ }
+
+ public void Resume()
+ {
+ m_Suspended = false;
+ }
}
}
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 98e77c0..54074ed 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -1488,5 +1488,23 @@ namespace OpenSim.Region.ScriptEngine.XEngine
return new ArrayList();
}
}
+
+ public void SuspendScript(UUID itemID)
+ {
+ IScriptInstance instance = GetInstance(itemID);
+ if (instance == null)
+ return;
+
+ instance.Suspend();
+ }
+
+ public void ResumeScript(UUID itemID)
+ {
+ IScriptInstance instance = GetInstance(itemID);
+ if (instance == null)
+ return;
+
+ instance.Resume();
+ }
}
}
--
cgit v1.1
From b39db7e9e418877e765a3958c9a5b54506ed475d Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 19 Apr 2010 10:43:25 +0100
Subject: Also enable scripts rezzed into prims
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 435026c..97a0544 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1450,6 +1450,8 @@ namespace OpenSim.Region.Framework.Scenes
destPart.Inventory.CreateScriptInstance(destTaskItem, start_param, false, DefaultScriptEngine, 0);
}
+ destPart.ParentGroup.ResumeScripts();
+
ScenePresence avatar;
if (TryGetScenePresence(srcTaskItem.OwnerID, out avatar))
--
cgit v1.1
From 689b6477908ac6dba8e197dbf7d7187f8c1667b6 Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Mon, 19 Apr 2010 12:54:33 +0200
Subject: And some more rez modes that weren't covered before
---
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 97a0544..ac9644e 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1278,6 +1278,7 @@ namespace OpenSim.Region.Framework.Scenes
// "Rezzed script {0} into prim local ID {1} for user {2}",
// item.inventoryName, localID, remoteClient.Name);
part.GetProperties(remoteClient);
+ part.ParentGroup.ResumeScripts();
}
else
{
@@ -1347,6 +1348,7 @@ namespace OpenSim.Region.Framework.Scenes
part.GetProperties(remoteClient);
part.Inventory.CreateScriptInstance(taskItem, 0, false, DefaultScriptEngine, 0);
+ part.ParentGroup.ResumeScripts();
}
}
--
cgit v1.1
From a89208b465ff935d769ecac70c7697d273ddb406 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 19 Apr 2010 14:14:31 +0100
Subject: Stopgap measure. Disable the recent script startup changes until I
can cure the race condition.
---
OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
index 74f25aa..3dd381d 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs
@@ -95,7 +95,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
private bool m_startedFromSavedState;
private UUID m_CurrentStateHash;
private UUID m_RegionID;
- private bool m_Suspended = true;
+ private bool m_Suspended = false;
private Dictionary, KeyValuePair>
m_LineMap;
--
cgit v1.1
From 3e63ce6d9d30a15addb7e31aa1c42df47c9dd8fd Mon Sep 17 00:00:00 2001
From: Melanie
Date: Mon, 19 Apr 2010 15:29:35 +0100
Subject: Make script asset fetches synchronous. Script instantiation
synchronization will not work if the instance is not created when the method
returns.
---
.../Framework/Scenes/SceneObjectPartInventory.cs | 52 ++++++++++------------
1 file changed, 24 insertions(+), 28 deletions(-)
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 2b6be29..68f0122 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -282,36 +282,32 @@ namespace OpenSim.Region.Framework.Scenes
return;
}
- m_part.ParentGroup.Scene.AssetService.Get(
- item.AssetID.ToString(), this, delegate(string id, object sender, AssetBase asset)
- {
- if (null == asset)
- {
- m_log.ErrorFormat(
- "[PRIM INVENTORY]: " +
- "Couldn't start script {0}, {1} at {2} in {3} since asset ID {4} could not be found",
- item.Name, item.ItemID, m_part.AbsolutePosition,
- m_part.ParentGroup.Scene.RegionInfo.RegionName, item.AssetID);
- }
- else
- {
- if (m_part.ParentGroup.m_savedScriptState != null)
- RestoreSavedScriptState(item.OldItemID, item.ItemID);
+ AssetBase asset = m_part.ParentGroup.Scene.AssetService.Get(item.AssetID.ToString());
+ if (null == asset)
+ {
+ m_log.ErrorFormat(
+ "[PRIM INVENTORY]: " +
+ "Couldn't start script {0}, {1} at {2} in {3} since asset ID {4} could not be found",
+ item.Name, item.ItemID, m_part.AbsolutePosition,
+ m_part.ParentGroup.Scene.RegionInfo.RegionName, item.AssetID);
+ }
+ else
+ {
+ if (m_part.ParentGroup.m_savedScriptState != null)
+ RestoreSavedScriptState(item.OldItemID, item.ItemID);
- lock (m_items)
- {
- m_items[item.ItemID].PermsMask = 0;
- m_items[item.ItemID].PermsGranter = UUID.Zero;
- }
-
- string script = Utils.BytesToString(asset.Data);
- m_part.ParentGroup.Scene.EventManager.TriggerRezScript(
- m_part.LocalId, item.ItemID, script, startParam, postOnRez, engine, stateSource);
- m_part.ParentGroup.AddActiveScriptCount(1);
- m_part.ScheduleFullUpdate();
- }
+ lock (m_items)
+ {
+ m_items[item.ItemID].PermsMask = 0;
+ m_items[item.ItemID].PermsGranter = UUID.Zero;
}
- );
+
+ string script = Utils.BytesToString(asset.Data);
+ m_part.ParentGroup.Scene.EventManager.TriggerRezScript(
+ m_part.LocalId, item.ItemID, script, startParam, postOnRez, engine, stateSource);
+ m_part.ParentGroup.AddActiveScriptCount(1);
+ m_part.ScheduleFullUpdate();
+ }
}
}
--
cgit v1.1
From af3e477e4b1cc6c1a2176d776e6c39d0c7fc457c Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Mon, 19 Apr 2010 19:27:45 +0200
Subject: Avoid duplicate script resumes. Move resume calls to more logical
places
---
OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs | 2 +-
.../CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 77e73fb..f050dcf 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -239,6 +239,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
// Fire after attach, so we don't get messy perms dialogs
// 3 == AttachedRez
objatt.CreateScriptInstances(0, true, m_scene.DefaultScriptEngine, 3);
+ objatt.ResumeScripts();
// Do this last so that event listeners have access to all the effects of the attachment
m_scene.EventManager.TriggerOnAttach(objatt.LocalId, itemID, remoteClient.AgentId);
@@ -250,7 +251,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
itemID, remoteClient.Name, AttachmentPt);
}
- objatt.ResumeScripts();
return objatt;
}
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index 32a0df9..2352ced 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -601,6 +601,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
// Fire on_rez
group.CreateScriptInstances(0, true, m_Scene.DefaultScriptEngine, 0);
+ rootPart.ParentGroup.ResumeScripts();
rootPart.ScheduleFullUpdate();
}
@@ -621,7 +622,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
}
}
- rootPart.ParentGroup.ResumeScripts();
return rootPart.ParentGroup;
}
}
--
cgit v1.1
From 855eda844ffa12b01fccfd9aeb831390b02687bf Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 19 Apr 2010 20:06:55 +0100
Subject: log problems when an asset request through the UDP TransferRequest
channel goes wrong
---
.../Region/ClientStack/LindenUDP/LLClientView.cs | 47 +++++++++++++++++++++-
1 file changed, 45 insertions(+), 2 deletions(-)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index b3f5f09..54c312c 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -7091,32 +7091,75 @@ namespace OpenSim.Region.ClientStack.LindenUDP
taskID = new UUID(transfer.TransferInfo.Params, 48);
UUID itemID = new UUID(transfer.TransferInfo.Params, 64);
UUID requestID = new UUID(transfer.TransferInfo.Params, 80);
+
+// m_log.DebugFormat(
+// "[LLCLIENTVIEW]: Got request for asset {0} from item {1} in prim {2} by {3}",
+// requestID, itemID, taskID, Name);
+
if (!(((Scene)m_scene).Permissions.BypassPermissions()))
{
if (taskID != UUID.Zero) // Prim
{
SceneObjectPart part = ((Scene)m_scene).GetSceneObjectPart(taskID);
+
if (part == null)
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but prim does not exist",
+ Name, requestID, itemID, taskID);
return true;
+ }
if (part.OwnerID != AgentId)
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but the prim is owned by {4}",
+ Name, requestID, itemID, taskID, part.OwnerID);
return true;
+ }
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but modify permissions are not set",
+ Name, requestID, itemID, taskID);
return true;
+ }
TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID);
if (ti == null)
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but item does not exist",
+ Name, requestID, itemID, taskID);
return true;
+ }
if (ti.OwnerID != AgentId)
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but the item is owned by {4}",
+ Name, requestID, itemID, taskID, ti.OwnerID);
return true;
+ }
- if ((ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer)) != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
+ if ((
+ ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
+ != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but item permissions are not modify/copy/transfer",
+ Name, requestID, itemID, taskID);
return true;
+ }
if (ti.AssetID != requestID)
+ {
+ m_log.WarnFormat(
+ "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but this does not match item's asset {4}",
+ Name, requestID, itemID, taskID, ti.AssetID);
return true;
+ }
}
else // Agent
{
@@ -11389,7 +11432,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// }
}
- //m_log.DebugFormat("[LLCLIENTVIEW]: {0} requesting asset {1}", Name, requestID);
+// m_log.DebugFormat("[LLCLIENTVIEW]: {0} requesting asset {1}", Name, requestID);
m_assetService.Get(requestID.ToString(), transferRequest, AssetReceived);
}
--
cgit v1.1
From da83ee28be93ff2649e1df214d942b01104247de Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 19 Apr 2010 21:02:36 +0100
Subject: If a transfer request is received for a task inventory item asset,
then route the permissions request through the existing CanEditScript() and
CanEditNotecard() methods. This implements the 'share with group' flag for
notecards and scripts in prim inventory since the PermissionsModule checks
group membership and permissions. Other than that, the code in
PermissionsModule duplicates the checks in LLClientView so there should be no
change other than allowing group members to edit embedded notecards and
scripts. For all other asset types, the permission checking code in
LLClientView continues to be used, pending refactoring of suitable
permissions code This means that 'share with group' will not yet work for
prim inventory items other than notecards and scripts
---
.../Region/ClientStack/LindenUDP/LLClientView.cs | 108 ++++++++++++---------
.../World/Permissions/PermissionsModule.cs | 17 ++--
2 files changed, 75 insertions(+), 50 deletions(-)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 54c312c..c4e8e09 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -7093,7 +7093,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
UUID requestID = new UUID(transfer.TransferInfo.Params, 80);
// m_log.DebugFormat(
-// "[LLCLIENTVIEW]: Got request for asset {0} from item {1} in prim {2} by {3}",
+// "[CLIENT]: Got request for asset {0} from item {1} in prim {2} by {3}",
// requestID, itemID, taskID, Name);
if (!(((Scene)m_scene).Permissions.BypassPermissions()))
@@ -7105,60 +7105,75 @@ namespace OpenSim.Region.ClientStack.LindenUDP
if (part == null)
{
m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but prim does not exist",
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but prim does not exist",
Name, requestID, itemID, taskID);
return true;
}
- if (part.OwnerID != AgentId)
+ TaskInventoryItem tii = part.Inventory.GetInventoryItem(itemID);
+ if (tii == null)
{
m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but the prim is owned by {4}",
- Name, requestID, itemID, taskID, part.OwnerID);
- return true;
- }
-
- if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
- {
- m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but modify permissions are not set",
- Name, requestID, itemID, taskID);
- return true;
- }
-
- TaskInventoryItem ti = part.Inventory.GetInventoryItem(itemID);
- if (ti == null)
- {
- m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but item does not exist",
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but item does not exist",
Name, requestID, itemID, taskID);
return true;
- }
-
- if (ti.OwnerID != AgentId)
+ }
+
+ if (tii.Type == (int)AssetType.LSLText)
{
- m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but the item is owned by {4}",
- Name, requestID, itemID, taskID, ti.OwnerID);
- return true;
+ if (!((Scene)m_scene).Permissions.CanEditScript(itemID, taskID, AgentId))
+ return true;
}
-
- if ((
- ti.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
- != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
+ else if (tii.Type == (int)AssetType.Notecard)
{
- m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but item permissions are not modify/copy/transfer",
- Name, requestID, itemID, taskID);
- return true;
+ if (!((Scene)m_scene).Permissions.CanEditNotecard(itemID, taskID, AgentId))
+ return true;
}
-
- if (ti.AssetID != requestID)
+ else
{
- m_log.WarnFormat(
- "[LLCLIENTVIEW]: {0} requested asset {1} from item {2} in prim {3} but this does not match item's asset {4}",
- Name, requestID, itemID, taskID, ti.AssetID);
- return true;
+ // TODO: Change this code to allow items other than notecards and scripts to be successfully
+ // shared with group. In fact, all this permissions checking should move to an IPermissionsModule
+ if (part.OwnerID != AgentId)
+ {
+ m_log.WarnFormat(
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but the prim is owned by {4}",
+ Name, requestID, itemID, taskID, part.OwnerID);
+ return true;
+ }
+
+ if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
+ {
+ m_log.WarnFormat(
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but modify permissions are not set",
+ Name, requestID, itemID, taskID);
+ return true;
+ }
+
+ if (tii.OwnerID != AgentId)
+ {
+ m_log.WarnFormat(
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but the item is owned by {4}",
+ Name, requestID, itemID, taskID, tii.OwnerID);
+ return true;
+ }
+
+ if ((
+ tii.CurrentPermissions & ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
+ != ((uint)PermissionMask.Modify | (uint)PermissionMask.Copy | (uint)PermissionMask.Transfer))
+ {
+ m_log.WarnFormat(
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but item permissions are not modify/copy/transfer",
+ Name, requestID, itemID, taskID);
+ return true;
+ }
+
+ if (tii.AssetID != requestID)
+ {
+ m_log.WarnFormat(
+ "[CLIENT]: {0} requested asset {1} from item {2} in prim {3} but this does not match item's asset {4}",
+ Name, requestID, itemID, taskID, tii.AssetID);
+ return true;
+ }
}
}
else // Agent
@@ -7197,7 +7212,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
}
if (assetRequestItem.AssetID != requestID)
+ {
+ m_log.WarnFormat(
+ "[CLIENT]: {0} requested asset {1} from item {2} but this does not match item's asset {3}",
+ Name, requestID, itemID, assetRequestItem.AssetID);
return true;
+ }
}
}
}
@@ -11432,7 +11452,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// }
}
-// m_log.DebugFormat("[LLCLIENTVIEW]: {0} requesting asset {1}", Name, requestID);
+// m_log.DebugFormat("[CLIENT]: {0} requesting asset {1}", Name, requestID);
m_assetService.Get(requestID.ToString(), transferRequest, AssetReceived);
}
@@ -11800,4 +11820,4 @@ namespace OpenSim.Region.ClientStack.LindenUDP
OutPacket(dialog, ThrottleOutPacketType.Task);
}
}
-}
+}
\ No newline at end of file
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index d940564..01359f0 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -1079,7 +1079,9 @@ namespace OpenSim.Region.CoreModules.World.Permissions
if ((part.GroupMask & (uint)PermissionMask.Modify) == 0)
return false;
- } else {
+ }
+ else
+ {
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
return false;
}
@@ -1095,7 +1097,7 @@ namespace OpenSim.Region.CoreModules.World.Permissions
return false;
if (!IsGroupMember(ti.GroupID, user, 0))
- return false;
+ return false;
}
// Require full perms
@@ -1593,14 +1595,16 @@ namespace OpenSim.Region.CoreModules.World.Permissions
if (part.OwnerID != user)
{
if (part.GroupID == UUID.Zero)
- return false;
+ return false;
if (!IsGroupMember(part.GroupID, user, 0))
return false;
if ((part.GroupMask & (uint)PermissionMask.Modify) == 0)
return false;
- } else {
+ }
+ else
+ {
if ((part.OwnerMask & (uint)PermissionMask.Modify) == 0)
return false;
}
@@ -1855,7 +1859,8 @@ namespace OpenSim.Region.CoreModules.World.Permissions
return GenericObjectPermission(agentID, prim, false);
}
- private bool CanCompileScript(UUID ownerUUID, int scriptType, Scene scene) {
+ private bool CanCompileScript(UUID ownerUUID, int scriptType, Scene scene)
+ {
//m_log.DebugFormat("check if {0} is allowed to compile {1}", ownerUUID, scriptType);
switch (scriptType) {
case 0:
@@ -1889,4 +1894,4 @@ namespace OpenSim.Region.CoreModules.World.Permissions
return(false);
}
}
-}
+}
\ No newline at end of file
--
cgit v1.1
From 524a2a9e26794e2ed645d51c089be42633a782df Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 19 Apr 2010 21:25:59 +0100
Subject: Make the "notecard saved" text appear in the saver rather than the
notecard owner, if the notecard is saved by a permitted group member This
means moving the alert up to a place where the IClientAPI is available. One
can also argue that such client messages shouldn't be sent directly from the
scene data model
---
.../Agent/AssetTransaction/AgentAssetsTransactions.cs | 3 +++
OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | 7 ++++++-
OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 10 ----------
3 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs
index 012d581..d30e954 100644
--- a/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs
+++ b/OpenSim/Region/CoreModules/Agent/AssetTransaction/AgentAssetsTransactions.cs
@@ -181,7 +181,10 @@ namespace OpenSim.Region.CoreModules.Agent.AssetTransaction
Manager.MyScene.AssetService.Store(asset);
if (part.Inventory.UpdateInventoryItem(item))
+ {
+ remoteClient.SendAgentAlertMessage("Notecard saved", false);
part.GetProperties(remoteClient);
+ }
}
}
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 7661068..144de43 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -201,7 +201,9 @@ namespace OpenSim.Region.Framework.Scenes
// Update item with new asset
item.AssetID = asset.FullID;
- group.UpdateInventoryItem(item);
+ if (group.UpdateInventoryItem(item))
+ remoteClient.SendAgentAlertMessage("Notecard saved", false);
+
part.GetProperties(remoteClient);
// Trigger rerunning of script (use TriggerRezScript event, see RezScript)
@@ -1224,7 +1226,10 @@ namespace OpenSim.Region.Framework.Scenes
remoteClient, part, transactionID, currentItem);
}
if (part.Inventory.UpdateInventoryItem(itemInfo))
+ {
+ remoteClient.SendAgentAlertMessage("Notecard saved", false);
part.GetProperties(remoteClient);
+ }
}
}
else
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
index 2e13f90..4b9a2ad 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs
@@ -630,16 +630,6 @@ namespace OpenSim.Region.Framework.Scenes
{
item.AssetID = m_items[item.ItemID].AssetID;
}
- else if ((InventoryType)item.Type == InventoryType.Notecard)
- {
- ScenePresence presence = m_part.ParentGroup.Scene.GetScenePresence(item.OwnerID);
-
- if (presence != null)
- {
- presence.ControllingClient.SendAgentAlertMessage(
- "Notecard saved", false);
- }
- }
m_items[item.ItemID] = item;
m_inventorySerial++;
--
cgit v1.1
From 50f327ef5c63959b7dcfbd4e19761f3a8a8038c8 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Mon, 19 Apr 2010 21:34:42 +0100
Subject: minor: change a comment and replace some magic numbers with the
AssetType enum
---
OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index c4e8e09..d7120a5 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -7132,7 +7132,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
else
{
// TODO: Change this code to allow items other than notecards and scripts to be successfully
- // shared with group. In fact, all this permissions checking should move to an IPermissionsModule
+ // shared with group. In fact, this whole block of permissions checking should move to an IPermissionsModule
if (part.OwnerID != AgentId)
{
m_log.WarnFormat(
@@ -7194,7 +7194,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
// only to notecards and scripts. All
// other asset types are always available
//
- if (assetRequestItem.AssetType == 10)
+ if (assetRequestItem.AssetType == (int)AssetType.LSLText)
{
if (!((Scene)m_scene).Permissions.CanViewScript(itemID, UUID.Zero, AgentId))
{
@@ -7202,7 +7202,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return true;
}
}
- else if (assetRequestItem.AssetType == 7)
+ else if (assetRequestItem.AssetType == (int)AssetType.Notecard)
{
if (!((Scene)m_scene).Permissions.CanViewNotecard(itemID, UUID.Zero, AgentId))
{
--
cgit v1.1
From 459323a931f6d4e23d813ef6414ea8e4d511dd76 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Wed, 21 Apr 2010 19:44:19 +0100
Subject: Make the detection cone in attachments face in the direction of the
avatar, not the relative rotation of the attachment towards the avatar.
---
.../Shared/Api/Implementation/Plugins/SensorRepeat.cs | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
index 2296379..4d7ead6 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs
@@ -302,6 +302,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
float dz;
Quaternion q = SensePoint.RotationOffset;
+ if (SensePoint.ParentGroup.RootPart.IsAttachment)
+ {
+ // In attachments, the sensor cone always orients with the
+ // avatar rotation. This may include a nonzero elevation if
+ // in mouselook.
+
+ ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.RootPart.AttachedAvatar);
+ q = avatar.Rotation;
+ }
LSL_Types.Quaternion r = new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W);
LSL_Types.Vector3 forward_dir = (new LSL_Types.Vector3(1, 0, 0) * r);
double mag_fwd = LSL_Types.Vector3.Mag(forward_dir);
--
cgit v1.1
From c9da66728a6f6bc1304b3f0ec70bd06c32d064c2 Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Thu, 22 Apr 2010 07:25:32 -0700
Subject: Renamed OpenSim.Server.exe to Robust.exe and corresponding .ini's and
config.
---
bin/OpenSim.Server.HG.ini.example | 209 --------------------------------------
bin/OpenSim.Server.exe.config | 33 ------
bin/OpenSim.Server.ini.example | 175 -------------------------------
bin/Robust.HG.ini.example | 209 ++++++++++++++++++++++++++++++++++++++
bin/Robust.exe.config | 33 ++++++
bin/Robust.ini.example | 175 +++++++++++++++++++++++++++++++
prebuild.xml | 2 +-
7 files changed, 418 insertions(+), 418 deletions(-)
delete mode 100644 bin/OpenSim.Server.HG.ini.example
delete mode 100644 bin/OpenSim.Server.exe.config
delete mode 100644 bin/OpenSim.Server.ini.example
create mode 100644 bin/Robust.HG.ini.example
create mode 100644 bin/Robust.exe.config
create mode 100644 bin/Robust.ini.example
diff --git a/bin/OpenSim.Server.HG.ini.example b/bin/OpenSim.Server.HG.ini.example
deleted file mode 100644
index 5e3f9a7..0000000
--- a/bin/OpenSim.Server.HG.ini.example
+++ /dev/null
@@ -1,209 +0,0 @@
-;; Configurations for enabling HG1.5
-;;
-;; Run
-;; $ OpenSim.Server.exe -inifile OpenSim.Server.HG.ini
-
-;; HG1.5 handlers are: OpenSim.Server.Handlers.dll:GatekeeperService
-;; OpenSim.Server.Handlers.dll:UserAgentService
-;; OpenSim.Server.Handlers.dll:HGInventoryServiceInConnector
-;; An additional OpenSim.Server.Handlers.dll:AssetServiceConnector is started
-;; in port 8002, outside the firewall
-;;
-
-[Startup]
-ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:InventoryServiceInConnector,8002/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8003/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:HGInventoryServiceInConnector,8002/OpenSim.Server.Handlers.dll:AssetServiceConnector"
-
-; * This is common for all services, it's the network setup for the entire
-; * server instance, if none if specified above
-; *
-[Network]
- port = 8003
-
-; * The following are for the remote console
-; * They have no effect for the local or basic console types
-; * Leave commented to diable logins to the console
-;ConsoleUser = Test
-;ConsolePass = secret
-;ConsolePort = 0
-
-[DatabaseService]
- StorageProvider = "OpenSim.Data.MySQL.dll"
- ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim123;"
-
-; * As an example, the below configuration precisely mimicks the legacy
-; * asset server. It is read by the asset IN connector (defined above)
-; * and it then loads the OUT connector (a local database module). That,
-; * in turn, reads the asset loader and database connection information
-; *
-[AssetService]
- LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
- DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
- AssetLoaderArgs = "assets/AssetSets.xml"
-
-; * This configuration loads the inventory server modules. It duplicates
-; * the function of the legacy inventory server
-; *
-[InventoryService]
- LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
- SessionAuthentication = "false"
-
-; * This is the new style grid service.
-; * "Realm" is the table that is used for user lookup.
-; * It defaults to "regions", which uses the legacy tables
-; *
-[GridService]
- LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
- Realm = "regions"
- ; AllowDuplicateNames = "True"
- ;; Next, we can specify properties of regions, including default and fallback regions
- ;; The syntax is: Region_ = ""
- ;; or: Region_ = ""
- ;; where can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut,Reservation,NoMove,Authenticate
- ;; For example:
- ; Region_Welcome_Area = "DefaultRegion, FallbackRegion"
- ; (replace spaces with underscore)
-
-; * This is the configuration for the freeswitch server in grid mode
-[FreeswitchService]
- LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
-
-; * This is the new style authentication service. Currently, only MySQL
-; * is implemented. "Realm" is the table that is used for user lookup.
-; * By setting it to "users", you can use the old style users table
-; * as an authentication source.
-; *
-[AuthenticationService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
-
-[OpenIdService]
- ; for the server connector
- AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
- UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
-
-; * This is the new style user service.
-; * "Realm" is the table that is used for user lookup.
-; * It defaults to "users", which uses the legacy tables
-; *
-[UserAccountService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- ;; These are for creating new accounts by the service
- AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
- PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
- GridService = "OpenSim.Services.GridService.dll:GridService"
- InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
-
-[PresenceService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
-
-[AvatarService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
-
-[FriendsService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
-
-[LibraryService]
- LibraryName = "OpenSim Library"
- DefaultLibrary = "./inventory/Libraries.xml"
-
-[LoginService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
- ; for the service
- UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
- InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
- AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
- PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
- GridService = "OpenSim.Services.GridService.dll:GridService"
- SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
- LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
- UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
- FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
-
- WelcomeMessage = "Welcome, Avatar!"
- ; Defaults for the users, if none is specified in the useraccounts table entry (ServiceURLs)
- ; CHANGE THIS
- HomeURI = "http://127.0.0.1:8002"
- GatekeeperURI = "http://127.0.0.1:8002"
- InventoryServerURI = "http://127.0.0.1:8002"
- AssetServerURI = "http://127.0.0.1:8002"
-
-[GridInfoService]
- ; These settings are used to return information on a get_grid_info call.
- ; Client launcher scripts and third-party clients make use of this to
- ; autoconfigure the client and to provide a nice user experience. If you
- ; want to facilitate that, you should configure the settings here according
- ; to your grid or standalone setup.
- ;
- ; See http://opensimulator.org/wiki/GridInfo
-
- ; login uri: for grid this is the login server URI
- login = http://127.0.0.1:9000/
-
- ; long grid name: the long name of your grid
- gridname = "the lost continent of hippo"
-
- ; short grid name: the short name of your grid
- gridnick = "hippogrid"
-
- ; login page: optional: if it exists it will be used to tell the client to use
- ; this as splash page
- ; currently unused
- ;welcome = http://127.0.0.1/welcome
-
- ; helper uri: optional: if it exists if will be used to tell the client to use
- ; this for all economy related things
- ; currently unused
- ;economy = http://127.0.0.1:9000/
-
- ; web page of grid: optional: page providing further information about your grid
- ; currently unused
- ;about = http://127.0.0.1/about/
-
- ; account creation: optional: page providing further information about obtaining
- ; a user account on your grid
- ; currently unused
- ;register = http://127.0.0.1/register
-
- ; help: optional: page providing further assistance for users of your grid
- ; currently unused
- ;help = http://127.0.0.1/help
-
- ; password help: optional: page providing password assistance for users of your grid
- ; currently unused
- ;password = http://127.0.0.1/password
-
-
-[GatekeeperService]
- LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
- ;; for the service
- UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
- PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
- GridService = "OpenSim.Services.GridService.dll:GridService"
- AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
- SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
- ; how does the outside world reach me? This acts as public key too.
- ; CHANGE THIS
- ExternalName = "http://127.0.0.1:8002"
-
-[UserAgentService]
- LocalServiceModule = "OpenSim.Services.HypergridService.dll:UserAgentService"
- ;; for the service
- PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
- GridService = "OpenSim.Services.GridService.dll:GridService"
-
-;; The interface that local users get when they are in other grids.
-;; This restricts the inventory operations while in other grids.
-;; Still not completely safe, especially if users perform inventory operations
-;; while in those grids. The more the user accesses his/her inventory, the more
-;; those simulators will know about the user's inventory.
-[HGInventoryService]
- ; For the InventoryServiceInConnector
- LocalServiceModule = "OpenSim.Services.InventoryService.dll:HGInventoryService"
-
diff --git a/bin/OpenSim.Server.exe.config b/bin/OpenSim.Server.exe.config
deleted file mode 100644
index c2d93c0..0000000
--- a/bin/OpenSim.Server.exe.config
+++ /dev/null
@@ -1,33 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/bin/OpenSim.Server.ini.example b/bin/OpenSim.Server.ini.example
deleted file mode 100644
index 9bedac6..0000000
--- a/bin/OpenSim.Server.ini.example
+++ /dev/null
@@ -1,175 +0,0 @@
-; * The startup section lists all the connectors to start up in this server
-; * instance. This may be only one, or it may be the entire server suite.
-; * Multiple connectors should be seaprated by commas.
-; * The startup section lists all the connectors to start up in this server
-; * instance. This may be only one, or it may be the entire server suite.
-; * Multiple connectors should be seaprated by commas.
-; *
-; * These are the IN connectors the server uses, the in connectors
-; * read this config file and load the needed service and database connectors
-; *
-; *
-[Startup]
-
-ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:InventoryServiceInConnector,8002/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector"
-
-; * This is common for all services, it's the network setup for the entire
-; * server instance, if none if specified above
-; *
-[Network]
- port = 8003
-
-; * The following are for the remote console
-; * They have no effect for the local or basic console types
-; * Leave commented to diable logins to the console
-;ConsoleUser = Test
-;ConsolePass = secret
-;ConsolePort = 0
-
-[DatabaseService]
- StorageProvider = "OpenSim.Data.MySQL.dll"
- ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim123;"
-
-
-; * As an example, the below configuration precisely mimicks the legacy
-; * asset server. It is read by the asset IN connector (defined above)
-; * and it then loads the OUT connector (a local database module). That,
-; * in turn, reads the asset loader and database connection information
-; *
-[AssetService]
- LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
- DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
- AssetLoaderArgs = "assets/AssetSets.xml"
-
-; * This configuration loads the inventory server modules. It duplicates
-; * the function of the legacy inventory server
-; *
-[InventoryService]
- LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
- SessionAuthentication = "false"
-
-; * This is the new style grid service.
-; * "Realm" is the table that is used for user lookup.
-; * It defaults to "regions", which uses the legacy tables
-; *
-[GridService]
- LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
- Realm = "regions"
- ; AllowDuplicateNames = "True"
- ;; Next, we can specify properties of regions, including default and fallback regions
- ;; The syntax is: Region_ = ""
- ;; or: Region_ = ""
- ;; where can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut,Reservation,NoMove,Authenticate
- ;; For example:
- ; Region_Welcome_Area = "DefaultRegion, FallbackRegion"
- ; (replace spaces with underscore)
-
-; * This is the configuration for the freeswitch server in grid mode
-[FreeswitchService]
- LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
-
-; * This is the new style authentication service. Currently, only MySQL
-; * is implemented. "Realm" is the table that is used for user lookup.
-; * By setting it to "users", you can use the old style users table
-; * as an authentication source.
-; *
-[AuthenticationService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
-
-[OpenIdService]
- ; for the server connector
- AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
- UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
-
-; * This is the new style user service.
-; * "Realm" is the table that is used for user lookup.
-; * It defaults to "users", which uses the legacy tables
-; *
-[UserAccountService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- ; Realm = "useraccounts"
- ;; These are for creating new accounts by the service
- AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
- PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
- GridService = "OpenSim.Services.GridService.dll:GridService"
- InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
-
-[PresenceService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
-
-[AvatarService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
-
-[FriendsService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
-
-[LibraryService]
- LibraryName = "OpenSim Library"
- DefaultLibrary = "./inventory/Libraries.xml"
-
-[LoginService]
- ; for the server connector
- LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
- ; for the service
- UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
- AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
- InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
- AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
- PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
- GridService = "OpenSim.Services.GridService.dll:GridService"
- SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
- LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
- FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
-
- WelcomeMessage = "Welcome, Avatar!"
-
-
-[GridInfoService]
- ; These settings are used to return information on a get_grid_info call.
- ; Client launcher scripts and third-party clients make use of this to
- ; autoconfigure the client and to provide a nice user experience. If you
- ; want to facilitate that, you should configure the settings here according
- ; to your grid or standalone setup.
- ;
- ; See http://opensimulator.org/wiki/GridInfo
-
- ; login uri: for grid this is the login server URI
- login = http://127.0.0.1:9000/
-
- ; long grid name: the long name of your grid
- gridname = "the lost continent of hippo"
-
- ; short grid name: the short name of your grid
- gridnick = "hippogrid"
-
- ; login page: optional: if it exists it will be used to tell the client to use
- ; this as splash page
- ; currently unused
- ;welcome = http://127.0.0.1/welcome
-
- ; helper uri: optional: if it exists if will be used to tell the client to use
- ; this for all economy related things
- ; currently unused
- ;economy = http://127.0.0.1:9000/
-
- ; web page of grid: optional: page providing further information about your grid
- ; currently unused
- ;about = http://127.0.0.1/about/
-
- ; account creation: optional: page providing further information about obtaining
- ; a user account on your grid
- ; currently unused
- ;register = http://127.0.0.1/register
-
- ; help: optional: page providing further assistance for users of your grid
- ; currently unused
- ;help = http://127.0.0.1/help
-
- ; password help: optional: page providing password assistance for users of your grid
- ; currently unused
- ;password = http://127.0.0.1/password
diff --git a/bin/Robust.HG.ini.example b/bin/Robust.HG.ini.example
new file mode 100644
index 0000000..5e3f9a7
--- /dev/null
+++ b/bin/Robust.HG.ini.example
@@ -0,0 +1,209 @@
+;; Configurations for enabling HG1.5
+;;
+;; Run
+;; $ OpenSim.Server.exe -inifile OpenSim.Server.HG.ini
+
+;; HG1.5 handlers are: OpenSim.Server.Handlers.dll:GatekeeperService
+;; OpenSim.Server.Handlers.dll:UserAgentService
+;; OpenSim.Server.Handlers.dll:HGInventoryServiceInConnector
+;; An additional OpenSim.Server.Handlers.dll:AssetServiceConnector is started
+;; in port 8002, outside the firewall
+;;
+
+[Startup]
+ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:InventoryServiceInConnector,8002/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8003/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector,8002/OpenSim.Server.Handlers.dll:GatekeeperServiceInConnector,8002/OpenSim.Server.Handlers.dll:UserAgentServerConnector,HGInventoryService@8002/OpenSim.Server.Handlers.dll:HGInventoryServiceInConnector,8002/OpenSim.Server.Handlers.dll:AssetServiceConnector"
+
+; * This is common for all services, it's the network setup for the entire
+; * server instance, if none if specified above
+; *
+[Network]
+ port = 8003
+
+; * The following are for the remote console
+; * They have no effect for the local or basic console types
+; * Leave commented to diable logins to the console
+;ConsoleUser = Test
+;ConsolePass = secret
+;ConsolePort = 0
+
+[DatabaseService]
+ StorageProvider = "OpenSim.Data.MySQL.dll"
+ ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim123;"
+
+; * As an example, the below configuration precisely mimicks the legacy
+; * asset server. It is read by the asset IN connector (defined above)
+; * and it then loads the OUT connector (a local database module). That,
+; * in turn, reads the asset loader and database connection information
+; *
+[AssetService]
+ LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
+ DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
+ AssetLoaderArgs = "assets/AssetSets.xml"
+
+; * This configuration loads the inventory server modules. It duplicates
+; * the function of the legacy inventory server
+; *
+[InventoryService]
+ LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
+ SessionAuthentication = "false"
+
+; * This is the new style grid service.
+; * "Realm" is the table that is used for user lookup.
+; * It defaults to "regions", which uses the legacy tables
+; *
+[GridService]
+ LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
+ Realm = "regions"
+ ; AllowDuplicateNames = "True"
+ ;; Next, we can specify properties of regions, including default and fallback regions
+ ;; The syntax is: Region_ = ""
+ ;; or: Region_ = ""
+ ;; where can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut,Reservation,NoMove,Authenticate
+ ;; For example:
+ ; Region_Welcome_Area = "DefaultRegion, FallbackRegion"
+ ; (replace spaces with underscore)
+
+; * This is the configuration for the freeswitch server in grid mode
+[FreeswitchService]
+ LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
+
+; * This is the new style authentication service. Currently, only MySQL
+; * is implemented. "Realm" is the table that is used for user lookup.
+; * By setting it to "users", you can use the old style users table
+; * as an authentication source.
+; *
+[AuthenticationService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+
+[OpenIdService]
+ ; for the server connector
+ AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+ UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+
+; * This is the new style user service.
+; * "Realm" is the table that is used for user lookup.
+; * It defaults to "users", which uses the legacy tables
+; *
+[UserAccountService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+ ;; These are for creating new accounts by the service
+ AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+ PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
+ GridService = "OpenSim.Services.GridService.dll:GridService"
+ InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
+
+[PresenceService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
+
+[AvatarService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
+
+[FriendsService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
+
+[LibraryService]
+ LibraryName = "OpenSim Library"
+ DefaultLibrary = "./inventory/Libraries.xml"
+
+[LoginService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
+ ; for the service
+ UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+ AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+ InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
+ AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
+ PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
+ GridService = "OpenSim.Services.GridService.dll:GridService"
+ SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
+ LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
+ UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
+ FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
+
+ WelcomeMessage = "Welcome, Avatar!"
+ ; Defaults for the users, if none is specified in the useraccounts table entry (ServiceURLs)
+ ; CHANGE THIS
+ HomeURI = "http://127.0.0.1:8002"
+ GatekeeperURI = "http://127.0.0.1:8002"
+ InventoryServerURI = "http://127.0.0.1:8002"
+ AssetServerURI = "http://127.0.0.1:8002"
+
+[GridInfoService]
+ ; These settings are used to return information on a get_grid_info call.
+ ; Client launcher scripts and third-party clients make use of this to
+ ; autoconfigure the client and to provide a nice user experience. If you
+ ; want to facilitate that, you should configure the settings here according
+ ; to your grid or standalone setup.
+ ;
+ ; See http://opensimulator.org/wiki/GridInfo
+
+ ; login uri: for grid this is the login server URI
+ login = http://127.0.0.1:9000/
+
+ ; long grid name: the long name of your grid
+ gridname = "the lost continent of hippo"
+
+ ; short grid name: the short name of your grid
+ gridnick = "hippogrid"
+
+ ; login page: optional: if it exists it will be used to tell the client to use
+ ; this as splash page
+ ; currently unused
+ ;welcome = http://127.0.0.1/welcome
+
+ ; helper uri: optional: if it exists if will be used to tell the client to use
+ ; this for all economy related things
+ ; currently unused
+ ;economy = http://127.0.0.1:9000/
+
+ ; web page of grid: optional: page providing further information about your grid
+ ; currently unused
+ ;about = http://127.0.0.1/about/
+
+ ; account creation: optional: page providing further information about obtaining
+ ; a user account on your grid
+ ; currently unused
+ ;register = http://127.0.0.1/register
+
+ ; help: optional: page providing further assistance for users of your grid
+ ; currently unused
+ ;help = http://127.0.0.1/help
+
+ ; password help: optional: page providing password assistance for users of your grid
+ ; currently unused
+ ;password = http://127.0.0.1/password
+
+
+[GatekeeperService]
+ LocalServiceModule = "OpenSim.Services.HypergridService.dll:GatekeeperService"
+ ;; for the service
+ UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+ UserAgentService = "OpenSim.Services.HypergridService.dll:UserAgentService"
+ PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
+ GridService = "OpenSim.Services.GridService.dll:GridService"
+ AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
+ SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
+ ; how does the outside world reach me? This acts as public key too.
+ ; CHANGE THIS
+ ExternalName = "http://127.0.0.1:8002"
+
+[UserAgentService]
+ LocalServiceModule = "OpenSim.Services.HypergridService.dll:UserAgentService"
+ ;; for the service
+ PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
+ GridService = "OpenSim.Services.GridService.dll:GridService"
+
+;; The interface that local users get when they are in other grids.
+;; This restricts the inventory operations while in other grids.
+;; Still not completely safe, especially if users perform inventory operations
+;; while in those grids. The more the user accesses his/her inventory, the more
+;; those simulators will know about the user's inventory.
+[HGInventoryService]
+ ; For the InventoryServiceInConnector
+ LocalServiceModule = "OpenSim.Services.InventoryService.dll:HGInventoryService"
+
diff --git a/bin/Robust.exe.config b/bin/Robust.exe.config
new file mode 100644
index 0000000..c2d93c0
--- /dev/null
+++ b/bin/Robust.exe.config
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bin/Robust.ini.example b/bin/Robust.ini.example
new file mode 100644
index 0000000..9bedac6
--- /dev/null
+++ b/bin/Robust.ini.example
@@ -0,0 +1,175 @@
+; * The startup section lists all the connectors to start up in this server
+; * instance. This may be only one, or it may be the entire server suite.
+; * Multiple connectors should be seaprated by commas.
+; * The startup section lists all the connectors to start up in this server
+; * instance. This may be only one, or it may be the entire server suite.
+; * Multiple connectors should be seaprated by commas.
+; *
+; * These are the IN connectors the server uses, the in connectors
+; * read this config file and load the needed service and database connectors
+; *
+; *
+[Startup]
+
+ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003/OpenSim.Server.Handlers.dll:InventoryServiceInConnector,8002/OpenSim.Server.Handlers.dll:FreeswitchServerConnector,8003/OpenSim.Server.Handlers.dll:GridServiceConnector,8002/OpenSim.Server.Handlers.dll:GridInfoServerInConnector,8003/OpenSim.Server.Handlers.dll:AuthenticationServiceConnector,8002/OpenSim.Server.Handlers.dll:OpenIdServerConnector,8003/OpenSim.Server.Handlers.dll:AvatarServiceConnector,8002/OpenSim.Server.Handlers.dll:LLLoginServiceInConnector,8003/OpenSim.Server.Handlers.dll:PresenceServiceConnector,8003/OpenSim.Server.Handlers.dll:UserAccountServiceConnector,8003/OpenSim.Server.Handlers.dll:FriendsServiceConnector"
+
+; * This is common for all services, it's the network setup for the entire
+; * server instance, if none if specified above
+; *
+[Network]
+ port = 8003
+
+; * The following are for the remote console
+; * They have no effect for the local or basic console types
+; * Leave commented to diable logins to the console
+;ConsoleUser = Test
+;ConsolePass = secret
+;ConsolePort = 0
+
+[DatabaseService]
+ StorageProvider = "OpenSim.Data.MySQL.dll"
+ ConnectionString = "Data Source=localhost;Database=opensim;User ID=opensim;Password=opensim123;"
+
+
+; * As an example, the below configuration precisely mimicks the legacy
+; * asset server. It is read by the asset IN connector (defined above)
+; * and it then loads the OUT connector (a local database module). That,
+; * in turn, reads the asset loader and database connection information
+; *
+[AssetService]
+ LocalServiceModule = "OpenSim.Services.AssetService.dll:AssetService"
+ DefaultAssetLoader = "OpenSim.Framework.AssetLoader.Filesystem.dll"
+ AssetLoaderArgs = "assets/AssetSets.xml"
+
+; * This configuration loads the inventory server modules. It duplicates
+; * the function of the legacy inventory server
+; *
+[InventoryService]
+ LocalServiceModule = "OpenSim.Services.InventoryService.dll:InventoryService"
+ SessionAuthentication = "false"
+
+; * This is the new style grid service.
+; * "Realm" is the table that is used for user lookup.
+; * It defaults to "regions", which uses the legacy tables
+; *
+[GridService]
+ LocalServiceModule = "OpenSim.Services.GridService.dll:GridService"
+ Realm = "regions"
+ ; AllowDuplicateNames = "True"
+ ;; Next, we can specify properties of regions, including default and fallback regions
+ ;; The syntax is: Region_ = ""
+ ;; or: Region_ = ""
+ ;; where can be DefaultRegion, FallbackRegion, NoDirectLogin, Persistent, LockedOut,Reservation,NoMove,Authenticate
+ ;; For example:
+ ; Region_Welcome_Area = "DefaultRegion, FallbackRegion"
+ ; (replace spaces with underscore)
+
+; * This is the configuration for the freeswitch server in grid mode
+[FreeswitchService]
+ LocalServiceModule = "OpenSim.Services.FreeswitchService.dll:FreeswitchService"
+
+; * This is the new style authentication service. Currently, only MySQL
+; * is implemented. "Realm" is the table that is used for user lookup.
+; * By setting it to "users", you can use the old style users table
+; * as an authentication source.
+; *
+[AuthenticationService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+
+[OpenIdService]
+ ; for the server connector
+ AuthenticationServiceModule = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+ UserAccountServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+
+; * This is the new style user service.
+; * "Realm" is the table that is used for user lookup.
+; * It defaults to "users", which uses the legacy tables
+; *
+[UserAccountService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+ ; Realm = "useraccounts"
+ ;; These are for creating new accounts by the service
+ AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+ PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
+ GridService = "OpenSim.Services.GridService.dll:GridService"
+ InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
+
+[PresenceService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
+
+[AvatarService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.AvatarService.dll:AvatarService"
+
+[FriendsService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.FriendsService.dll:FriendsService"
+
+[LibraryService]
+ LibraryName = "OpenSim Library"
+ DefaultLibrary = "./inventory/Libraries.xml"
+
+[LoginService]
+ ; for the server connector
+ LocalServiceModule = "OpenSim.Services.LLLoginService.dll:LLLoginService"
+ ; for the service
+ UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
+ AuthenticationService = "OpenSim.Services.AuthenticationService.dll:PasswordAuthenticationService"
+ InventoryService = "OpenSim.Services.InventoryService.dll:InventoryService"
+ AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
+ PresenceService = "OpenSim.Services.PresenceService.dll:PresenceService"
+ GridService = "OpenSim.Services.GridService.dll:GridService"
+ SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
+ LibraryService = "OpenSim.Services.InventoryService.dll:LibraryService"
+ FriendsService = "OpenSim.Services.FriendsService.dll:FriendsService"
+
+ WelcomeMessage = "Welcome, Avatar!"
+
+
+[GridInfoService]
+ ; These settings are used to return information on a get_grid_info call.
+ ; Client launcher scripts and third-party clients make use of this to
+ ; autoconfigure the client and to provide a nice user experience. If you
+ ; want to facilitate that, you should configure the settings here according
+ ; to your grid or standalone setup.
+ ;
+ ; See http://opensimulator.org/wiki/GridInfo
+
+ ; login uri: for grid this is the login server URI
+ login = http://127.0.0.1:9000/
+
+ ; long grid name: the long name of your grid
+ gridname = "the lost continent of hippo"
+
+ ; short grid name: the short name of your grid
+ gridnick = "hippogrid"
+
+ ; login page: optional: if it exists it will be used to tell the client to use
+ ; this as splash page
+ ; currently unused
+ ;welcome = http://127.0.0.1/welcome
+
+ ; helper uri: optional: if it exists if will be used to tell the client to use
+ ; this for all economy related things
+ ; currently unused
+ ;economy = http://127.0.0.1:9000/
+
+ ; web page of grid: optional: page providing further information about your grid
+ ; currently unused
+ ;about = http://127.0.0.1/about/
+
+ ; account creation: optional: page providing further information about obtaining
+ ; a user account on your grid
+ ; currently unused
+ ;register = http://127.0.0.1/register
+
+ ; help: optional: page providing further assistance for users of your grid
+ ; currently unused
+ ;help = http://127.0.0.1/help
+
+ ; password help: optional: page providing password assistance for users of your grid
+ ; currently unused
+ ;password = http://127.0.0.1/password
diff --git a/prebuild.xml b/prebuild.xml
index 5cc742c..47f0347 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -1299,7 +1299,7 @@
-
+
../../bin/
--
cgit v1.1
From e33209fe5bf2a520d9fcb7fb309d66c8d0000aab Mon Sep 17 00:00:00 2001
From: Diva Canto
Date: Thu, 22 Apr 2010 08:47:47 -0700
Subject: Sanitized parsing of floats (x, y, z location) for Culture.
---
OpenSim/Services/LLLoginService/LLLoginService.cs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/OpenSim/Services/LLLoginService/LLLoginService.cs b/OpenSim/Services/LLLoginService/LLLoginService.cs
index 7b25274..c333b5c 100644
--- a/OpenSim/Services/LLLoginService/LLLoginService.cs
+++ b/OpenSim/Services/LLLoginService/LLLoginService.cs
@@ -405,9 +405,9 @@ namespace OpenSim.Services.LLLoginService
}
else
{
- position = new Vector3(float.Parse(uriMatch.Groups["x"].Value),
- float.Parse(uriMatch.Groups["y"].Value),
- float.Parse(uriMatch.Groups["z"].Value));
+ position = new Vector3(float.Parse(uriMatch.Groups["x"].Value, Culture.NumberFormatInfo),
+ float.Parse(uriMatch.Groups["y"].Value, Culture.NumberFormatInfo),
+ float.Parse(uriMatch.Groups["z"].Value, Culture.NumberFormatInfo));
string regionName = uriMatch.Groups["region"].ToString();
if (regionName != null)
--
cgit v1.1
From ebcc9874d4d285ab2b45d62cc4fe89e9830111b7 Mon Sep 17 00:00:00 2001
From: Melanie
Date: Thu, 22 Apr 2010 17:45:03 +0100
Subject: Insert a ROLLBACK command on migration step failure. This ensures
that updating the Migrations table will not occur in a partial transaction,
which would be auto-rolled-back later.
---
OpenSim/Data/Migration.cs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/OpenSim/Data/Migration.cs b/OpenSim/Data/Migration.cs
index 4622e23..68e25ef 100644
--- a/OpenSim/Data/Migration.cs
+++ b/OpenSim/Data/Migration.cs
@@ -146,6 +146,8 @@ namespace OpenSim.Data
{
m_log.DebugFormat("[MIGRATIONS] Cmd was {0}", cmd.CommandText);
m_log.DebugFormat("[MIGRATIONS]: An error has occurred in the migration {0}.\n This may mean you could see errors trying to run OpenSim. If you see database related errors, you will need to fix the issue manually. Continuing.", e.Message);
+ cmd.CommandText = "ROLLBACK;";
+ cmd.ExecuteNonQuery();
}
if (version == 0)
--
cgit v1.1