diff --git a/.nant/local.include b/.nant/local.include
index 510bdc66dc..58d1ad1160 100644
--- a/.nant/local.include
+++ b/.nant/local.include
@@ -34,51 +34,55 @@
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
diff --git a/Makefile b/Makefile
index 46ddc2f19e..493cdca619 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,14 @@
-NANT = $(shell if test "$$EMACS" = "t" ; then echo "nant"; else echo "./nant-color"; fi)
+# hey, emacs! this is a -*- makefile -*-
+#
+# OpenSim makefile
+#
+
+RUBY = $(strip $(shell which ruby 2>/dev/null))
+ifeq ($(RUBY),)
+NANT = nant
+else
+NANT = $(shell if test "$$EMACS" = "t" ; then echo "nant"; else echo "./nant-color"; fi)
+endif
all: prebuild
# @export PATH=/usr/local/bin:$(PATH)
@@ -14,7 +24,7 @@ prebuild:
clean:
# @export PATH=/usr/local/bin:$(PATH)
- ${NANT} clean
+ -${NANT} clean
test: prebuild
${NANT} test
diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs
index c9e4bfe0c0..adedcce81d 100644
--- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs
@@ -210,6 +210,7 @@ namespace OpenSim.Data.MSSQL
{
foreach (SceneObjectPart objectPart in allPrimsWithInventory)
{
+ command.Parameters.Clear();
command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID));
List inventory = new List();
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs
index bbb0ae2286..58344f30c8 100644
--- a/OpenSim/Framework/Util.cs
+++ b/OpenSim/Framework/Util.cs
@@ -1169,5 +1169,27 @@ namespace OpenSim.Framework
return found.ToArray();
}
+
+ #region FireAndForget Threading Pattern
+
+ public static void FireAndForget(System.Threading.WaitCallback callback)
+ {
+ callback.BeginInvoke(null, EndFireAndForget, callback);
+ }
+
+ public static void FireAndForget(System.Threading.WaitCallback callback, object obj)
+ {
+ callback.BeginInvoke(obj, EndFireAndForget, callback);
+ }
+
+ private static void EndFireAndForget(IAsyncResult ar)
+ {
+ System.Threading.WaitCallback callback = (System.Threading.WaitCallback)ar.AsyncState;
+
+ callback.EndInvoke(ar);
+ ar.AsyncWaitHandle.Close();
+ }
+
+ #endregion FireAndForget Threading Pattern
}
}
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index 4ee90e2aa3..f73a7e3844 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -199,6 +199,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
InventoryFolderImpl inventoryFolder = null;
InventoryItemBase inventoryItem = null;
+ /*
if (!m_userInfo.HasReceivedInventory)
{
// If the region server has access to the user admin service (by which users are created),
@@ -220,13 +221,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
m_userInfo.FetchInventory();
}
}
+ */
bool foundStar = false;
// Eliminate double slashes and any leading / on the path. This might be better done within InventoryFolderImpl
// itself (possibly at a small loss in efficiency).
string[] components
- = m_invPath.Split(new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
+ = m_invPath.Split(
+ new string[] { InventoryFolderImpl.PATH_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
int maxComponentIndex = components.Length - 1;
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
index d3ba5fe11f..c495e022ab 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs
@@ -64,6 +64,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
///
private Dictionary m_scenes = new Dictionary();
private Scene m_aScene;
+
///
/// The comms manager we will use for all comms requests
///
@@ -110,8 +111,30 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
InventoryArchiveSaved handlerInventoryArchiveSaved = OnInventoryArchiveSaved;
if (handlerInventoryArchiveSaved != null)
handlerInventoryArchiveSaved(succeeded, userInfo, invPath, saveStream, reportedException);
+ }
+
+ public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
+ {
+ if (m_scenes.Count > 0)
+ {
+ CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
+
+ if (userInfo != null)
+ new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
+ }
}
-
+
+ public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
+ {
+ if (m_scenes.Count > 0)
+ {
+ CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
+
+ if (userInfo != null)
+ new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
+ }
+ }
+
public void DearchiveInventory(string firstName, string lastName, string invPath, Stream loadStream)
{
if (m_scenes.Count > 0)
@@ -125,18 +148,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
UpdateClientWithLoadedNodes(userInfo, request.Execute());
}
}
- }
-
- public void ArchiveInventory(string firstName, string lastName, string invPath, Stream saveStream)
- {
- if (m_scenes.Count > 0)
- {
- CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
-
- if (userInfo != null)
- new InventoryArchiveWriteRequest(this, userInfo, invPath, saveStream).Execute();
- }
- }
+ }
public void DearchiveInventory(string firstName, string lastName, string invPath, string loadPath)
{
@@ -151,18 +163,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
UpdateClientWithLoadedNodes(userInfo, request.Execute());
}
}
- }
-
- public void ArchiveInventory(string firstName, string lastName, string invPath, string savePath)
- {
- if (m_scenes.Count > 0)
- {
- CachedUserInfo userInfo = GetUserInfo(firstName, lastName);
-
- if (userInfo != null)
- new InventoryArchiveWriteRequest(this, userInfo, invPath, savePath).Execute();
- }
- }
+ }
///
/// Load inventory from an inventory file archive
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
index 621e9d2855..7b4e374819 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/HGAssetBroker.cs
@@ -272,7 +272,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
if (asset != null)
{
- handler.BeginInvoke(id, sender, asset, null, null);
+ Util.FireAndForget(delegate { handler(id, sender, asset); });
return true;
}
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
index b13a116418..fd3aaf4fd1 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Asset/LocalAssetServiceConnector.cs
@@ -211,7 +211,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
if (asset != null)
{
- handler.BeginInvoke(id, sender, asset, null, null);
+ Util.FireAndForget(delegate { handler(id, sender, asset); });
return true;
}
@@ -219,8 +219,8 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Asset
{
if ((a != null) && (m_Cache != null))
m_Cache.Cache(a);
-
- handler.BeginInvoke(assetID, s, a, null, null);
+
+ Util.FireAndForget(delegate { handler(assetID, s, a); });
});
}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
index 55b100b0db..fddba86cbe 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.PacketHandlers.cs
@@ -457,6 +457,8 @@ namespace OpenSim.Region.Framework.Scenes
void SendInventoryComplete(IAsyncResult iar)
{
+ SendInventoryDelegate d = (SendInventoryDelegate)iar.AsyncState;
+ d.EndInvoke(iar);
}
///
@@ -622,6 +624,8 @@ namespace OpenSim.Region.Framework.Scenes
private void PurgeFolderCompleted(IAsyncResult iar)
{
+ PurgeFolderDelegate d = (PurgeFolderDelegate)iar.AsyncState;
+ d.EndInvoke(iar);
}
}
}
diff --git a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs
index d9748d4fd8..ffc8e4ce53 100644
--- a/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Asset/AssetServiceConnector.cs
@@ -177,7 +177,7 @@ namespace OpenSim.Services.Connectors
}
else
{
- handler.BeginInvoke(id, sender, asset, null, null);
+ Util.FireAndForget(delegate { handler(id, sender, asset); });
}
return true;
diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
index a2261ba0f4..cef678ddd0 100644
--- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
+++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs
@@ -461,6 +461,8 @@ namespace OpenSim.Services.Connectors
private void MoveItemsCompleted(IAsyncResult iar)
{
+ MoveItemsDelegate d = (MoveItemsDelegate)iar.AsyncState;
+ d.EndInvoke(iar);
}
public bool MoveItems(string userID, List items, UUID sessionID)
diff --git a/OpenSim/Services/InventoryService/InventoryService.cs b/OpenSim/Services/InventoryService/InventoryService.cs
index f04754b195..b98e256c06 100644
--- a/OpenSim/Services/InventoryService/InventoryService.cs
+++ b/OpenSim/Services/InventoryService/InventoryService.cs
@@ -232,7 +232,7 @@ namespace OpenSim.Services.InventoryService
m_log.WarnFormat("[INVENTORY SERVICE]: User {0} inventory not available", userID);
}
- callback.BeginInvoke(folders, items, null, null);
+ Util.FireAndForget(delegate { callback(folders, items); });
}
public InventoryCollection GetFolderContent(UUID userID, UUID folderID)
diff --git a/README.txt b/README.txt
index cdbf011b04..83ac7d6265 100644
--- a/README.txt
+++ b/README.txt
@@ -1,7 +1,7 @@
Welcome to OpenSim!
Version 0.6.x
-
+
== OVERVIEW ==
OpenSim is a BSD Licensed Open Source project to develop a functioning
@@ -90,4 +90,3 @@ project can always be found at http://opensimulator.org.
Thanks for trying OpenSim, we hope it is a pleasant experience.
-
diff --git a/TESTING.txt b/TESTING.txt
index 94f58874e9..e0a7748e6f 100644
--- a/TESTING.txt
+++ b/TESTING.txt
@@ -135,3 +135,4 @@ nunit-console2 OpenSim.Framework.Tests.dll (on linux)
nunit-console OpenSim.Framework.Tests.dll (on windows)
For more information on testing contact the autor of this testing readme: Daedius Moskvitch ( daedius @@@@ daedius com)
+
diff --git a/bin/OpenSim.ConsoleClient.ini.example b/bin/OpenSim.ConsoleClient.ini.example
index beea7d875b..5223d1d262 100644
--- a/bin/OpenSim.ConsoleClient.ini.example
+++ b/bin/OpenSim.ConsoleClient.ini.example
@@ -1 +1,14 @@
[Startup]
+ ; Set here or use the -user command-line switch
+ ;user = Test
+
+ ; Set here or use the -host command-line switch
+ ;host = localhost
+
+ ; Set here or use the -port command-line switch
+ ;port = 8003
+
+ ; Set here or use the -pass command-line switch
+ ; Please be aware that this is not secure since the password is in the clear
+ ; we recommend the use of -pass wherever possible
+ ;pass = secret
diff --git a/nant-color b/nant-color
index c4cebb043d..b36898681b 100755
--- a/nant-color
+++ b/nant-color
@@ -1,5 +1,4 @@
-#!/usr/bin/ruby
-
+#!/usr/bin/env ruby
def main
IO.popen("nant #{ARGV.join(' ')}") { |pipe|