diff options
author | Melanie | 2013-05-01 21:39:49 +0100 |
---|---|---|
committer | Melanie | 2013-05-01 21:39:49 +0100 |
commit | 8c5445b774c602a13a7b49db1630b5f9fb9ff438 (patch) | |
tree | 6e829d2903b589c0c703793fb804632ea2324d62 /OpenSim/Region | |
parent | Merge branch 'master' into careminster (diff) | |
parent | Merge branch 'master' of melanie@opensimulator.org:/var/git/opensim (diff) | |
download | opensim-SC-8c5445b774c602a13a7b49db1630b5f9fb9ff438.zip opensim-SC-8c5445b774c602a13a7b49db1630b5f9fb9ff438.tar.gz opensim-SC-8c5445b774c602a13a7b49db1630b5f9fb9ff438.tar.bz2 opensim-SC-8c5445b774c602a13a7b49db1630b5f9fb9ff438.tar.xz |
Merge branch 'master' into careminster
Conflicts:
ThirdParty/SmartThreadPool/SmartThreadPool.cs
Diffstat (limited to 'OpenSim/Region')
7 files changed, 26 insertions, 13 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs index 921d3bf..59b9585 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/BunchOfCaps/BunchOfCaps.cs | |||
@@ -355,11 +355,22 @@ namespace OpenSim.Region.ClientStack.Linden | |||
355 | return string.Empty; | 355 | return string.Empty; |
356 | } | 356 | } |
357 | 357 | ||
358 | Hashtable caps = m_HostCapsObj.CapsHandlers.GetCapsDetails(true); | 358 | OSDArray capsRequested = (OSDArray)OSDParser.DeserializeLLSDXml(request); |
359 | List<string> validCaps = new List<string>(); | ||
360 | |||
361 | foreach (OSD c in capsRequested) | ||
362 | validCaps.Add(c.AsString()); | ||
363 | |||
364 | Hashtable caps = m_HostCapsObj.CapsHandlers.GetCapsDetails(true, validCaps); | ||
359 | 365 | ||
360 | // Add the external too | 366 | // Add the external too |
361 | foreach (KeyValuePair<string, string> kvp in m_HostCapsObj.ExternalCapsHandlers) | 367 | foreach (KeyValuePair<string, string> kvp in m_HostCapsObj.ExternalCapsHandlers) |
368 | { | ||
369 | if (!validCaps.Contains(kvp.Key)) | ||
370 | continue; | ||
371 | |||
362 | caps[kvp.Key] = kvp.Value; | 372 | caps[kvp.Key] = kvp.Value; |
373 | } | ||
363 | 374 | ||
364 | string result = LLSDHelpers.SerialiseLLSDReply(caps); | 375 | string result = LLSDHelpers.SerialiseLLSDReply(caps); |
365 | 376 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs index 2eb9bfb..fff86d5 100644 --- a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs +++ b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs | |||
@@ -252,7 +252,7 @@ namespace OpenSim.Region.CoreModules.Framework | |||
252 | { | 252 | { |
253 | caps.AppendFormat("** Circuit {0}:\n", kvp.Key); | 253 | caps.AppendFormat("** Circuit {0}:\n", kvp.Key); |
254 | 254 | ||
255 | for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.GetCapsDetails(false).GetEnumerator(); kvp2.MoveNext(); ) | 255 | for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.GetCapsDetails(false, null).GetEnumerator(); kvp2.MoveNext(); ) |
256 | { | 256 | { |
257 | Uri uri = new Uri(kvp2.Value.ToString()); | 257 | Uri uri = new Uri(kvp2.Value.ToString()); |
258 | caps.AppendFormat(m_showCapsCommandFormat, kvp2.Key, uri.PathAndQuery); | 258 | caps.AppendFormat(m_showCapsCommandFormat, kvp2.Key, uri.PathAndQuery); |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index bbe7446..1d762c4 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -676,11 +676,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
676 | } | 676 | } |
677 | else | 677 | else |
678 | { | 678 | { |
679 | if (remoteClient == null || so.OwnerID != remoteClient.AgentId) | 679 | if (remoteClient == null || so.RootPart.OwnerID != remoteClient.AgentId) |
680 | { | 680 | { |
681 | // Taking copy of another person's item. Take to | 681 | // Taking copy of another person's item. Take to |
682 | // Objects folder. | 682 | // Objects folder. |
683 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); | 683 | folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object); |
684 | so.FromFolderID = UUID.Zero; | ||
684 | } | 685 | } |
685 | else | 686 | else |
686 | { | 687 | { |
@@ -696,7 +697,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
696 | // | 697 | // |
697 | if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) | 698 | if (action == DeRezAction.Take || action == DeRezAction.TakeCopy) |
698 | { | 699 | { |
699 | if (so.FromFolderID != UUID.Zero && userID == remoteClient.AgentId) | 700 | if (so.FromFolderID != UUID.Zero && so.RootPart.OwnerID == remoteClient.AgentId) |
700 | { | 701 | { |
701 | InventoryFolderBase f = new InventoryFolderBase(so.FromFolderID, userID); | 702 | InventoryFolderBase f = new InventoryFolderBase(so.FromFolderID, userID); |
702 | if (f != null) | 703 | if (f != null) |
diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index 35ae44c..b9a217b 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs | |||
@@ -51,7 +51,7 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | |||
51 | public interface IScriptWorkItem | 51 | public interface IScriptWorkItem |
52 | { | 52 | { |
53 | bool Cancel(); | 53 | bool Cancel(); |
54 | void Abort(); | 54 | bool Abort(); |
55 | 55 | ||
56 | /// <summary> | 56 | /// <summary> |
57 | /// Wait for the work item to complete. | 57 | /// Wait for the work item to complete. |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index fa238aa..8da06d1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | |||
@@ -572,9 +572,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
572 | 572 | ||
573 | public bool Stop(int timeout) | 573 | public bool Stop(int timeout) |
574 | { | 574 | { |
575 | // m_log.DebugFormat( | 575 | if (DebugLevel >= 1) |
576 | // "[SCRIPT INSTANCE]: Stopping script {0} {1} in {2} {3} with timeout {4} {5} {6}", | 576 | m_log.DebugFormat( |
577 | // ScriptName, ItemID, PrimName, ObjectID, timeout, m_InSelfDelete, DateTime.Now.Ticks); | 577 | "[SCRIPT INSTANCE]: Stopping script {0} {1} in {2} {3} with timeout {4} {5} {6}", |
578 | ScriptName, ItemID, PrimName, ObjectID, timeout, m_InSelfDelete, DateTime.Now.Ticks); | ||
578 | 579 | ||
579 | IScriptWorkItem workItem; | 580 | IScriptWorkItem workItem; |
580 | 581 | ||
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index dd70f59..9d1e143 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -551,7 +551,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
551 | /// <param name="instance"></param> | 551 | /// <param name="instance"></param> |
552 | /// <param name="keySelector">Basis on which to sort output. Can be null if no sort needs to take place</param> | 552 | /// <param name="keySelector">Basis on which to sort output. Can be null if no sort needs to take place</param> |
553 | private void HandleScriptsAction<TKey>( | 553 | private void HandleScriptsAction<TKey>( |
554 | string[] cmdparams, Action<IScriptInstance> action, Func<IScriptInstance, TKey> keySelector) | 554 | string[] cmdparams, Action<IScriptInstance> action, System.Func<IScriptInstance, TKey> keySelector) |
555 | { | 555 | { |
556 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) | 556 | if (!(MainConsole.Instance.ConsoleScene == null || MainConsole.Instance.ConsoleScene == m_Scene)) |
557 | return; | 557 | return; |
@@ -1599,7 +1599,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1599 | startInfo.MaxWorkerThreads = maxThreads; | 1599 | startInfo.MaxWorkerThreads = maxThreads; |
1600 | startInfo.MinWorkerThreads = minThreads; | 1600 | startInfo.MinWorkerThreads = minThreads; |
1601 | startInfo.ThreadPriority = threadPriority;; | 1601 | startInfo.ThreadPriority = threadPriority;; |
1602 | startInfo.StackSize = stackSize; | 1602 | startInfo.MaxStackSize = stackSize; |
1603 | startInfo.StartSuspended = true; | 1603 | startInfo.StartSuspended = true; |
1604 | 1604 | ||
1605 | m_ThreadPool = new SmartThreadPool(startInfo); | 1605 | m_ThreadPool = new SmartThreadPool(startInfo); |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs b/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs index 8dd7677..9d9dee1 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XWorkItem.cs | |||
@@ -52,16 +52,16 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
52 | return wr.Cancel(); | 52 | return wr.Cancel(); |
53 | } | 53 | } |
54 | 54 | ||
55 | public void Abort() | 55 | public bool Abort() |
56 | { | 56 | { |
57 | wr.Abort(); | 57 | return wr.Cancel(true); |
58 | } | 58 | } |
59 | 59 | ||
60 | public bool Wait(int t) | 60 | public bool Wait(int t) |
61 | { | 61 | { |
62 | // We use the integer version of WaitAll because the current version of SmartThreadPool has a bug with the | 62 | // We use the integer version of WaitAll because the current version of SmartThreadPool has a bug with the |
63 | // TimeSpan version. The number of milliseconds in TimeSpan is an int64 so when STP casts it down to an | 63 | // TimeSpan version. The number of milliseconds in TimeSpan is an int64 so when STP casts it down to an |
64 | // int (32-bit) we can end up with bad values. This occurs on Windows though curious not on Mono 2.10.8 | 64 | // int (32-bit) we can end up with bad values. This occurs on Windows though curiously not on Mono 2.10.8 |
65 | // (or very likely other versions of Mono at least up until 3.0.3). | 65 | // (or very likely other versions of Mono at least up until 3.0.3). |
66 | return SmartThreadPool.WaitAll(new IWorkItemResult[] {wr}, t, false); | 66 | return SmartThreadPool.WaitAll(new IWorkItemResult[] {wr}, t, false); |
67 | } | 67 | } |