aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
authorMelanie2011-10-26 01:27:24 +0100
committerMelanie2011-10-26 01:27:24 +0100
commitfd22159d0c7d7b149d35747cbaa436f3b1e6f579 (patch)
treebbe8cdc63dd1f98346a6afb844f4b4d3caf336a8 /OpenSim
parentMerge commit 'e14cb45b9bc4c78300cb804833cb66c1c2e62187' into bigmerge (diff)
parentRestart the event queue worker threads that I accidentally disabled earlier t... (diff)
downloadopensim-SC-fd22159d0c7d7b149d35747cbaa436f3b1e6f579.zip
opensim-SC-fd22159d0c7d7b149d35747cbaa436f3b1e6f579.tar.gz
opensim-SC-fd22159d0c7d7b149d35747cbaa436f3b1e6f579.tar.bz2
opensim-SC-fd22159d0c7d7b149d35747cbaa436f3b1e6f579.tar.xz
Merge branch 'master' into bigmerge
Conflicts: OpenSim/Framework/Watchdog.cs
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/ConsoleClient/ConsoleClient.cs1
-rw-r--r--OpenSim/Framework/ConfigurationMember.cs2
-rw-r--r--OpenSim/Framework/Console/CommandConsole.cs11
-rwxr-xr-xOpenSim/Framework/Console/ConsoleBase.cs2
-rw-r--r--OpenSim/Framework/ICommandConsole.cs90
-rw-r--r--OpenSim/Framework/IConsole.cs53
-rw-r--r--OpenSim/Framework/IScene.cs4
-rw-r--r--OpenSim/Framework/MainConsole.cs (renamed from OpenSim/Framework/Console/MainConsole.cs)6
-rw-r--r--OpenSim/Framework/RegionInfo.cs2
-rw-r--r--OpenSim/Framework/Servers/BaseOpenSimServer.cs30
-rw-r--r--OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs4
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs40
-rw-r--r--OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs2
-rw-r--r--OpenSim/Framework/Servers/MainServer.cs (renamed from OpenSim/Framework/MainServer.cs)2
-rw-r--r--OpenSim/Framework/Watchdog.cs102
-rw-r--r--OpenSim/Framework/WebUtil.cs60
-rw-r--r--OpenSim/Region/Application/OpenSim.cs1
-rw-r--r--OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs1
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs2
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/InterGrid/OGSRadmin.cs1
-rw-r--r--OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs3
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/MapImage/MapImageServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs14
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs3
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs1
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs1
-rw-r--r--OpenSim/Region/OptionalModules/ServiceConnectorsIn/Freeswitch/FreeswitchServiceInConnectorModule.cs1
-rw-r--r--OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs2
-rw-r--r--OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs1
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs2
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs2
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsActor.cs47
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs12
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs18
-rw-r--r--OpenSim/Region/Physics/OdePlugin/OdeScene.cs17
-rw-r--r--OpenSim/Server/Base/HttpServerBase.cs1
-rw-r--r--OpenSim/Server/Base/ServicesServerBase.cs3
-rw-r--r--OpenSim/Tools/pCampBot/pCampBot.cs1
53 files changed, 412 insertions, 149 deletions
diff --git a/OpenSim/ConsoleClient/ConsoleClient.cs b/OpenSim/ConsoleClient/ConsoleClient.cs
index f4605da..7c003ea 100644
--- a/OpenSim/ConsoleClient/ConsoleClient.cs
+++ b/OpenSim/ConsoleClient/ConsoleClient.cs
@@ -33,6 +33,7 @@ using System.IO;
33using System.Xml; 33using System.Xml;
34using System.Collections.Generic; 34using System.Collections.Generic;
35using OpenSim.Server.Base; 35using OpenSim.Server.Base;
36using OpenSim.Framework;
36using OpenSim.Framework.Console; 37using OpenSim.Framework.Console;
37using OpenMetaverse; 38using OpenMetaverse;
38 39
diff --git a/OpenSim/Framework/ConfigurationMember.cs b/OpenSim/Framework/ConfigurationMember.cs
index b4ce877..7afa68a 100644
--- a/OpenSim/Framework/ConfigurationMember.cs
+++ b/OpenSim/Framework/ConfigurationMember.cs
@@ -33,7 +33,7 @@ using System.Reflection;
33using System.Xml; 33using System.Xml;
34using log4net; 34using log4net;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework.Console; 36//using OpenSim.Framework.Console;
37 37
38namespace OpenSim.Framework 38namespace OpenSim.Framework
39{ 39{
diff --git a/OpenSim/Framework/Console/CommandConsole.cs b/OpenSim/Framework/Console/CommandConsole.cs
index be36cf2..f10b857 100644
--- a/OpenSim/Framework/Console/CommandConsole.cs
+++ b/OpenSim/Framework/Console/CommandConsole.cs
@@ -33,12 +33,11 @@ using System.Reflection;
33using System.Text; 33using System.Text;
34using System.Threading; 34using System.Threading;
35using log4net; 35using log4net;
36using OpenSim.Framework;
36 37
37namespace OpenSim.Framework.Console 38namespace OpenSim.Framework.Console
38{ 39{
39 public delegate void CommandDelegate(string module, string[] cmd); 40 public class Commands : ICommands
40
41 public class Commands
42 { 41 {
43 /// <summary> 42 /// <summary>
44 /// Encapsulates a command that can be invoked from the console 43 /// Encapsulates a command that can be invoked from the console
@@ -564,14 +563,16 @@ namespace OpenSim.Framework.Console
564 /// <summary> 563 /// <summary>
565 /// A console that processes commands internally 564 /// A console that processes commands internally
566 /// </summary> 565 /// </summary>
567 public class CommandConsole : ConsoleBase 566 public class CommandConsole : ConsoleBase, ICommandConsole
568 { 567 {
569 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 568 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
570 569
571 public Commands Commands = new Commands(); 570 public ICommands Commands { get; private set; }
572 571
573 public CommandConsole(string defaultPrompt) : base(defaultPrompt) 572 public CommandConsole(string defaultPrompt) : base(defaultPrompt)
574 { 573 {
574 Commands = new Commands();
575
575 Commands.AddCommand("console", false, "help", "help [<command>]", 576 Commands.AddCommand("console", false, "help", "help [<command>]",
576 "Get general command list or more detailed help on a specific command", Help); 577 "Get general command list or more detailed help on a specific command", Help);
577 } 578 }
diff --git a/OpenSim/Framework/Console/ConsoleBase.cs b/OpenSim/Framework/Console/ConsoleBase.cs
index c59fbca..4b375d9 100755
--- a/OpenSim/Framework/Console/ConsoleBase.cs
+++ b/OpenSim/Framework/Console/ConsoleBase.cs
@@ -41,7 +41,7 @@ namespace OpenSim.Framework.Console
41 41
42 protected string prompt = "# "; 42 protected string prompt = "# ";
43 43
44 public object ConsoleScene = null; 44 public object ConsoleScene { get; set; }
45 45
46 /// <summary> 46 /// <summary>
47 /// The default prompt text. 47 /// The default prompt text.
diff --git a/OpenSim/Framework/ICommandConsole.cs b/OpenSim/Framework/ICommandConsole.cs
new file mode 100644
index 0000000..d33b9b5
--- /dev/null
+++ b/OpenSim/Framework/ICommandConsole.cs
@@ -0,0 +1,90 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Xml;
31
32namespace OpenSim.Framework
33{
34 public delegate void CommandDelegate(string module, string[] cmd);
35
36 public interface ICommands
37 {
38 void FromXml(XmlElement root, CommandDelegate fn);
39
40 /// <summary>
41 /// Get help for the given help string
42 /// </summary>
43 /// <param name="helpParts">Parsed parts of the help string. If empty then general help is returned.</param>
44 /// <returns></returns>
45 List<string> GetHelp(string[] cmd);
46
47 /// <summary>
48 /// Add a command to those which can be invoked from the console.
49 /// </summary>
50 /// <param name="module"></param>
51 /// <param name="command"></param>
52 /// <param name="help"></param>
53 /// <param name="longhelp"></param>
54 /// <param name="fn"></param>
55 void AddCommand(string module, bool shared, string command, string help, string longhelp, CommandDelegate fn);
56
57 /// <summary>
58 /// Add a command to those which can be invoked from the console.
59 /// </summary>
60 /// <param name="module"></param>
61 /// <param name="command"></param>
62 /// <param name="help"></param>
63 /// <param name="longhelp"></param>
64 /// <param name="descriptivehelp"></param>
65 /// <param name="fn"></param>
66 void AddCommand(string module, bool shared, string command,
67 string help, string longhelp, string descriptivehelp,
68 CommandDelegate fn);
69
70 string[] FindNextOption(string[] cmd, bool term);
71
72 string[] Resolve(string[] cmd);
73
74 XmlElement GetXml(XmlDocument doc);
75 }
76
77 public interface ICommandConsole : IConsole
78 {
79 ICommands Commands { get; }
80
81 /// <summary>
82 /// Display a command prompt on the console and wait for user input
83 /// </summary>
84 void Prompt();
85
86 void RunCommand(string cmd);
87
88 string ReadLine(string p, bool isCommand, bool e);
89 }
90} \ No newline at end of file
diff --git a/OpenSim/Framework/IConsole.cs b/OpenSim/Framework/IConsole.cs
new file mode 100644
index 0000000..33024b2
--- /dev/null
+++ b/OpenSim/Framework/IConsole.cs
@@ -0,0 +1,53 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30
31namespace OpenSim.Framework
32{
33 public interface IConsole
34 {
35 object ConsoleScene { get; }
36
37 void Output(string text, string level);
38 void Output(string text);
39 void OutputFormat(string format, params object[] components);
40
41 string CmdPrompt(string p);
42 string CmdPrompt(string p, string def);
43 string CmdPrompt(string p, List<char> excludedCharacters);
44 string CmdPrompt(string p, string def, List<char> excludedCharacters);
45
46 // Displays a command prompt and returns a default value, user may only enter 1 of 2 options
47 string CmdPrompt(string prompt, string defaultresponse, List<string> options);
48
49 // Displays a prompt and waits for the user to enter a string, then returns that string
50 // (Done with no echo and suitable for passwords)
51 string PasswdPrompt(string p);
52 }
53} \ No newline at end of file
diff --git a/OpenSim/Framework/IScene.cs b/OpenSim/Framework/IScene.cs
index e0cb897..f1b4732 100644
--- a/OpenSim/Framework/IScene.cs
+++ b/OpenSim/Framework/IScene.cs
@@ -26,7 +26,7 @@
26 */ 26 */
27 27
28using OpenMetaverse; 28using OpenMetaverse;
29using OpenSim.Framework.Console; 29//using OpenSim.Framework.Console;
30using Nini.Config; 30using Nini.Config;
31 31
32namespace OpenSim.Framework 32namespace OpenSim.Framework
@@ -108,7 +108,7 @@ namespace OpenSim.Framework
108 void RegisterModuleInterface<M>(M mod); 108 void RegisterModuleInterface<M>(M mod);
109 void StackModuleInterface<M>(M mod); 109 void StackModuleInterface<M>(M mod);
110 110
111 void AddCommand(object module, string command, string shorthelp, string longhelp, CommandDelegate callback); 111// void AddCommand(object module, string command, string shorthelp, string longhelp, CommandDelegate callback);
112 112
113 ISceneObject DeserializeObject(string representation); 113 ISceneObject DeserializeObject(string representation);
114 114
diff --git a/OpenSim/Framework/Console/MainConsole.cs b/OpenSim/Framework/MainConsole.cs
index 24be617..4527b68 100644
--- a/OpenSim/Framework/Console/MainConsole.cs
+++ b/OpenSim/Framework/MainConsole.cs
@@ -25,13 +25,13 @@
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28namespace OpenSim.Framework.Console 28namespace OpenSim.Framework
29{ 29{
30 public class MainConsole 30 public class MainConsole
31 { 31 {
32 private static CommandConsole instance; 32 private static ICommandConsole instance;
33 33
34 public static CommandConsole Instance 34 public static ICommandConsole Instance
35 { 35 {
36 get { return instance; } 36 get { return instance; }
37 set { instance = value; } 37 set { instance = value; }
diff --git a/OpenSim/Framework/RegionInfo.cs b/OpenSim/Framework/RegionInfo.cs
index b0202fb..db6c26f 100644
--- a/OpenSim/Framework/RegionInfo.cs
+++ b/OpenSim/Framework/RegionInfo.cs
@@ -36,7 +36,7 @@ using log4net;
36using Nini.Config; 36using Nini.Config;
37using OpenMetaverse; 37using OpenMetaverse;
38using OpenMetaverse.StructuredData; 38using OpenMetaverse.StructuredData;
39using OpenSim.Framework.Console; 39//using OpenSim.Framework.Console;
40 40
41namespace OpenSim.Framework 41namespace OpenSim.Framework
42{ 42{
diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
index 64b9c3e..66d0813 100644
--- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs
+++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs
@@ -192,6 +192,15 @@ namespace OpenSim.Framework.Servers
192 m_console.Commands.AddCommand("base", false, "show version", 192 m_console.Commands.AddCommand("base", false, "show version",
193 "show version", 193 "show version",
194 "Show server version", HandleShow); 194 "Show server version", HandleShow);
195
196 m_console.Commands.AddCommand("base", false, "threads abort",
197 "threads abort <thread-id>",
198 "Abort a managed thread. Use \"show threads\" to find possible threads.", HandleThreadsAbort);
199
200 m_console.Commands.AddCommand("base", false, "threads show",
201 "threads show",
202 "Show thread status. Synonym for \"show threads\"",
203 (string module, string[] args) => Notice(GetThreadsReport()));
195 } 204 }
196 } 205 }
197 206
@@ -395,6 +404,27 @@ namespace OpenSim.Framework.Servers
395 break; 404 break;
396 } 405 }
397 } 406 }
407
408 public virtual void HandleThreadsAbort(string module, string[] cmd)
409 {
410 if (cmd.Length != 3)
411 {
412 MainConsole.Instance.Output("Usage: threads abort <thread-id>");
413 return;
414 }
415
416 int threadId;
417 if (!int.TryParse(cmd[2], out threadId))
418 {
419 MainConsole.Instance.Output("ERROR: Thread id must be an integer");
420 return;
421 }
422
423 if (Watchdog.AbortThread(threadId))
424 MainConsole.Instance.OutputFormat("Aborted thread with id {0}", threadId);
425 else
426 MainConsole.Instance.OutputFormat("ERROR - Thread with id {0} not found in managed threads", threadId);
427 }
398 428
399 protected void ShowInfo() 429 protected void ShowInfo()
400 { 430 {
diff --git a/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs
index 65b1eb5..fd77984 100644
--- a/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs
+++ b/OpenSim/Framework/Servers/HttpServer/Interfaces/IHttpServer.cs
@@ -49,7 +49,7 @@ namespace OpenSim.Framework.Servers.HttpServer
49 /// <summary> 49 /// <summary>
50 /// Add a handler for an HTTP request. 50 /// Add a handler for an HTTP request.
51 /// </summary> 51 /// </summary>
52 /// 52 /// <remarks>
53 /// This handler can actually be invoked either as 53 /// This handler can actually be invoked either as
54 /// 54 ///
55 /// http://<hostname>:<port>/?method=<methodName> 55 /// http://<hostname>:<port>/?method=<methodName>
@@ -70,7 +70,7 @@ namespace OpenSim.Framework.Servers.HttpServer
70 /// In addition, the handler invoked by the HTTP server for any request is the one when best matches the request 70 /// In addition, the handler invoked by the HTTP server for any request is the one when best matches the request
71 /// URI. So if a handler for "/myapp/" is registered and a request for "/myapp/page" is received, then 71 /// URI. So if a handler for "/myapp/" is registered and a request for "/myapp/page" is received, then
72 /// the "/myapp/" handler is invoked if no "/myapp/page" handler exists. 72 /// the "/myapp/" handler is invoked if no "/myapp/page" handler exists.
73 /// 73 /// </remarks>
74 /// <param name="methodName"></param> 74 /// <param name="methodName"></param>
75 /// <param name="handler"></param> 75 /// <param name="handler"></param>
76 /// <returns> 76 /// <returns>
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
index 0840a9d..d9965b6 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceRequestManager.cs
@@ -31,6 +31,7 @@ using System.Threading;
31using System.Reflection; 31using System.Reflection;
32using log4net; 32using log4net;
33using HttpServer; 33using HttpServer;
34using OpenSim.Framework;
34 35
35namespace OpenSim.Framework.Servers.HttpServer 36namespace OpenSim.Framework.Servers.HttpServer
36{ 37{
@@ -54,21 +55,27 @@ namespace OpenSim.Framework.Servers.HttpServer
54 m_PollServiceWorkerThreads = new PollServiceWorkerThread[m_WorkerThreadCount]; 55 m_PollServiceWorkerThreads = new PollServiceWorkerThread[m_WorkerThreadCount];
55 56
56 //startup worker threads 57 //startup worker threads
57 for (uint i=0;i<m_WorkerThreadCount;i++) 58 for (uint i = 0; i < m_WorkerThreadCount; i++)
58 { 59 {
59 m_PollServiceWorkerThreads[i] = new PollServiceWorkerThread(m_server, pTimeout); 60 m_PollServiceWorkerThreads[i] = new PollServiceWorkerThread(m_server, pTimeout);
60 m_PollServiceWorkerThreads[i].ReQueue += ReQueueEvent; 61 m_PollServiceWorkerThreads[i].ReQueue += ReQueueEvent;
61 62
62 m_workerThreads[i] = new Thread(m_PollServiceWorkerThreads[i].ThreadStart); 63 m_workerThreads[i]
63 m_workerThreads[i].Name = String.Format("PollServiceWorkerThread{0}",i); 64 = Watchdog.StartThread(
64 //Can't add to thread Tracker here Referencing OpenSim.Framework creates circular reference 65 m_PollServiceWorkerThreads[i].ThreadStart,
65 m_workerThreads[i].Start(); 66 String.Format("PollServiceWorkerThread{0}", i),
67 ThreadPriority.Normal,
68 false,
69 int.MaxValue);
66 } 70 }
67 71
68 //start watcher threads 72 m_watcherThread
69 m_watcherThread = new Thread(ThreadStart); 73 = Watchdog.StartThread(
70 m_watcherThread.Name = "PollServiceWatcherThread"; 74 this.ThreadStart,
71 m_watcherThread.Start(); 75 "PollServiceWatcherThread",
76 ThreadPriority.Normal,
77 false,
78 1000 * 60 * 10);
72 } 79 }
73 80
74 internal void ReQueueEvent(PollServiceHttpRequest req) 81 internal void ReQueueEvent(PollServiceHttpRequest req)
@@ -83,10 +90,11 @@ namespace OpenSim.Framework.Servers.HttpServer
83 m_requests.Enqueue(req); 90 m_requests.Enqueue(req);
84 } 91 }
85 92
86 public void ThreadStart(object o) 93 public void ThreadStart()
87 { 94 {
88 while (m_running) 95 while (m_running)
89 { 96 {
97 Watchdog.UpdateThread();
90 ProcessQueuedRequests(); 98 ProcessQueuedRequests();
91 Thread.Sleep(1000); 99 Thread.Sleep(1000);
92 } 100 }
@@ -107,7 +115,7 @@ namespace OpenSim.Framework.Servers.HttpServer
107 for (int tc = 0; tc < m_WorkerThreadCount && m_requests.Count > 0; tc++) 115 for (int tc = 0; tc < m_WorkerThreadCount && m_requests.Count > 0; tc++)
108 { 116 {
109 //Loop over number of requests each thread handles. 117 //Loop over number of requests each thread handles.
110 for (int i=0;i<reqperthread && m_requests.Count > 0;i++) 118 for (int i = 0; i < reqperthread && m_requests.Count > 0; i++)
111 { 119 {
112 try 120 try
113 { 121 {
@@ -125,14 +133,14 @@ namespace OpenSim.Framework.Servers.HttpServer
125 133
126 } 134 }
127 135
128
129
130 ~PollServiceRequestManager() 136 ~PollServiceRequestManager()
131 { 137 {
132 foreach (object o in m_requests) 138 foreach (object o in m_requests)
133 { 139 {
134 PollServiceHttpRequest req = (PollServiceHttpRequest) o; 140 PollServiceHttpRequest req = (PollServiceHttpRequest) o;
135 m_server.DoHTTPGruntWork(req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id), new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext)); 141 m_server.DoHTTPGruntWork(
142 req.PollServiceArgs.NoEvents(req.RequestID, req.PollServiceArgs.Id),
143 new OSHttpResponse(new HttpResponse(req.HttpContext, req.Request), req.HttpContext));
136 } 144 }
137 145
138 m_requests.Clear(); 146 m_requests.Clear();
@@ -144,4 +152,4 @@ namespace OpenSim.Framework.Servers.HttpServer
144 m_running = false; 152 m_running = false;
145 } 153 }
146 } 154 }
147} 155} \ No newline at end of file
diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs
index b91496b..16e56d2 100644
--- a/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs
+++ b/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs
@@ -59,7 +59,7 @@ namespace OpenSim.Framework.Servers.HttpServer
59 m_timeout = pTimeout; 59 m_timeout = pTimeout;
60 } 60 }
61 61
62 public void ThreadStart(object o) 62 public void ThreadStart()
63 { 63 {
64 Run(); 64 Run();
65 } 65 }
diff --git a/OpenSim/Framework/MainServer.cs b/OpenSim/Framework/Servers/MainServer.cs
index a3e0a26..b8ab8d9 100644
--- a/OpenSim/Framework/MainServer.cs
+++ b/OpenSim/Framework/Servers/MainServer.cs
@@ -31,7 +31,7 @@ using System.Net;
31using log4net; 31using log4net;
32using OpenSim.Framework.Servers.HttpServer; 32using OpenSim.Framework.Servers.HttpServer;
33 33
34namespace OpenSim.Framework 34namespace OpenSim.Framework.Servers
35{ 35{
36 public class MainServer 36 public class MainServer
37 { 37 {
diff --git a/OpenSim/Framework/Watchdog.cs b/OpenSim/Framework/Watchdog.cs
index 3389ecb..952f039 100644
--- a/OpenSim/Framework/Watchdog.cs
+++ b/OpenSim/Framework/Watchdog.cs
@@ -40,19 +40,31 @@ namespace OpenSim.Framework
40 { 40 {
41 /// <summary>Timer interval in milliseconds for the watchdog timer</summary> 41 /// <summary>Timer interval in milliseconds for the watchdog timer</summary>
42 const double WATCHDOG_INTERVAL_MS = 2500.0d; 42 const double WATCHDOG_INTERVAL_MS = 2500.0d;
43
43 /// <summary>Maximum timeout in milliseconds before a thread is considered dead</summary> 44 /// <summary>Maximum timeout in milliseconds before a thread is considered dead</summary>
44 const int WATCHDOG_TIMEOUT_MS = 5000; 45 const int WATCHDOG_TIMEOUT_MS = 5000;
45 46
46 [System.Diagnostics.DebuggerDisplay("{Thread.Name}")] 47 [System.Diagnostics.DebuggerDisplay("{Thread.Name}")]
47 public class ThreadWatchdogInfo 48 public class ThreadWatchdogInfo
48 { 49 {
49 public Thread Thread; 50 public Thread Thread { get; private set; }
50 public int LastTick; 51 public int LastTick { get; set; }
52
53 /// <summary>
54 /// Number of milliseconds before we notify that the thread is having a problem.
55 /// </summary>
56 public int Timeout { get; set; }
57
58 /// <summary>
59 /// Is this thread considered timed out?
60 /// </summary>
61 public bool IsTimedOut { get; set; }
51 62
52 public ThreadWatchdogInfo(Thread thread) 63 public ThreadWatchdogInfo(Thread thread, int timeout)
53 { 64 {
54 Thread = thread; 65 Thread = thread;
55 LastTick = Environment.TickCount; 66 Timeout = timeout;
67 LastTick = Environment.TickCount & Int32.MaxValue;
56 } 68 }
57 } 69 }
58 70
@@ -82,7 +94,7 @@ namespace OpenSim.Framework
82 } 94 }
83 95
84 /// <summary> 96 /// <summary>
85 /// Start a new thread that is tracked by the watchdog timer 97 /// Start a new thread that is tracked by the watchdog timer.
86 /// </summary> 98 /// </summary>
87 /// <param name="start">The method that will be executed in a new thread</param> 99 /// <param name="start">The method that will be executed in a new thread</param>
88 /// <param name="name">A name to give to the new thread</param> 100 /// <param name="name">A name to give to the new thread</param>
@@ -92,12 +104,37 @@ namespace OpenSim.Framework
92 /// <returns>The newly created Thread object</returns> 104 /// <returns>The newly created Thread object</returns>
93 public static Thread StartThread(ThreadStart start, string name, ThreadPriority priority, bool isBackground) 105 public static Thread StartThread(ThreadStart start, string name, ThreadPriority priority, bool isBackground)
94 { 106 {
107 return StartThread(start, name, priority, isBackground, WATCHDOG_TIMEOUT_MS);
108 }
109
110 /// <summary>
111 /// Start a new thread that is tracked by the watchdog timer
112 /// </summary>
113 /// <param name="start">The method that will be executed in a new thread</param>
114 /// <param name="name">A name to give to the new thread</param>
115 /// <param name="priority">Priority to run the thread at</param>
116 /// <param name="isBackground">True to run this thread as a background
117 /// thread, otherwise false</param>
118 /// <param name="timeout">
119 /// Number of milliseconds to wait until we issue a warning about timeout.
120 /// </para>
121 /// <returns>The newly created Thread object</returns>
122 public static Thread StartThread(
123 ThreadStart start, string name, ThreadPriority priority, bool isBackground, int timeout)
124 {
95 Thread thread = new Thread(start); 125 Thread thread = new Thread(start);
96 thread.Name = name; 126 thread.Name = name;
97 thread.Priority = priority; 127 thread.Priority = priority;
98 thread.IsBackground = isBackground; 128 thread.IsBackground = isBackground;
99 thread.Start(); 129 thread.Start();
100 130
131 ThreadWatchdogInfo twi = new ThreadWatchdogInfo(thread, timeout);
132
133 m_log.Debug("[WATCHDOG]: Started tracking thread \"" + twi.Thread.Name + "\" (ID " + twi.Thread.ManagedThreadId + ")");
134
135 lock (m_threads)
136 m_threads.Add(twi.Thread.ManagedThreadId, twi);
137
101 return thread; 138 return thread;
102 } 139 }
103 140
@@ -112,25 +149,42 @@ namespace OpenSim.Framework
112 /// <summary> 149 /// <summary>
113 /// Stops watchdog tracking on the current thread 150 /// Stops watchdog tracking on the current thread
114 /// </summary> 151 /// </summary>
115 /// <returns>True if the thread was removed from the list of tracked 152 /// <returns>
116 /// threads, otherwise false</returns> 153 /// True if the thread was removed from the list of tracked
154 /// threads, otherwise false
155 /// </returns>
117 public static bool RemoveThread() 156 public static bool RemoveThread()
118 { 157 {
119 return RemoveThread(Thread.CurrentThread.ManagedThreadId); 158 return RemoveThread(Thread.CurrentThread.ManagedThreadId);
120 } 159 }
121 160
122 private static void AddThread(ThreadWatchdogInfo threadInfo) 161 private static bool RemoveThread(int threadID)
123 { 162 {
124 m_log.Debug("[WATCHDOG]: Started tracking thread \"" + threadInfo.Thread.Name + "\" (ID " + threadInfo.Thread.ManagedThreadId + ")");
125
126 lock (m_threads) 163 lock (m_threads)
127 m_threads.Add(threadInfo.Thread.ManagedThreadId, threadInfo); 164 return m_threads.Remove(threadID);
128 } 165 }
129 166
167<<<<<<< HEAD:OpenSim/Framework/Watchdog.cs
130 public static bool RemoveThread(int threadID) 168 public static bool RemoveThread(int threadID)
169=======
170 public static bool AbortThread(int threadID)
171>>>>>>> master:OpenSim/Framework/Watchdog.cs
131 { 172 {
132 lock (m_threads) 173 lock (m_threads)
133 return m_threads.Remove(threadID); 174 {
175 if (m_threads.ContainsKey(threadID))
176 {
177 ThreadWatchdogInfo twi = m_threads[threadID];
178 twi.Thread.Abort();
179 RemoveThread(threadID);
180
181 return true;
182 }
183 else
184 {
185 return false;
186 }
187 }
134 } 188 }
135 189
136 private static void UpdateThread(int threadID) 190 private static void UpdateThread(int threadID)
@@ -144,9 +198,18 @@ namespace OpenSim.Framework
144 try 198 try
145 { 199 {
146 if (m_threads.TryGetValue(threadID, out threadInfo)) 200 if (m_threads.TryGetValue(threadID, out threadInfo))
201<<<<<<< HEAD:OpenSim/Framework/Watchdog.cs
147 threadInfo.LastTick = Environment.TickCount; 202 threadInfo.LastTick = Environment.TickCount;
203=======
204 {
205 threadInfo.LastTick = Environment.TickCount & Int32.MaxValue;
206 threadInfo.IsTimedOut = false;
207 }
208>>>>>>> master:OpenSim/Framework/Watchdog.cs
148 else 209 else
149 AddThread(new ThreadWatchdogInfo(Thread.CurrentThread)); 210 {
211 m_log.WarnFormat("[WATCHDOG]: Asked to update thread {0} which is not being monitored", threadID);
212 }
150 } 213 }
151 catch { } 214 catch { }
152 } 215 }
@@ -157,7 +220,8 @@ namespace OpenSim.Framework
157 /// <returns></returns> 220 /// <returns></returns>
158 public static ThreadWatchdogInfo[] GetThreads() 221 public static ThreadWatchdogInfo[] GetThreads()
159 { 222 {
160 return m_threads.Values.ToArray(); 223 lock (m_threads)
224 return m_threads.Values.ToArray();
161 } 225 }
162 226
163 private static void WatchdogTimerElapsed(object sender, System.Timers.ElapsedEventArgs e) 227 private static void WatchdogTimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
@@ -174,10 +238,16 @@ namespace OpenSim.Framework
174 238
175 foreach (ThreadWatchdogInfo threadInfo in m_threads.Values) 239 foreach (ThreadWatchdogInfo threadInfo in m_threads.Values)
176 { 240 {
177 if (threadInfo.Thread.ThreadState == ThreadState.Stopped || now - threadInfo.LastTick >= WATCHDOG_TIMEOUT_MS) 241 if (threadInfo.Thread.ThreadState == ThreadState.Stopped)
242 {
243 timedOut = threadInfo;
244 RemoveThread(threadInfo.Thread.ManagedThreadId);
245 break;
246 }
247 else if (!threadInfo.IsTimedOut && now - threadInfo.LastTick >= threadInfo.Timeout)
178 { 248 {
249 threadInfo.IsTimedOut = true;
179 timedOut = threadInfo; 250 timedOut = threadInfo;
180 m_threads.Remove(threadInfo.Thread.ManagedThreadId);
181 break; 251 break;
182 } 252 }
183 } 253 }
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs
index 971c0b7..60c1e15 100644
--- a/OpenSim/Framework/WebUtil.cs
+++ b/OpenSim/Framework/WebUtil.cs
@@ -39,9 +39,7 @@ using System.Text;
39using System.Web; 39using System.Web;
40using System.Xml; 40using System.Xml;
41using System.Xml.Serialization; 41using System.Xml.Serialization;
42
43using log4net; 42using log4net;
44using OpenSim.Framework.Servers.HttpServer;
45using OpenMetaverse.StructuredData; 43using OpenMetaverse.StructuredData;
46 44
47namespace OpenSim.Framework 45namespace OpenSim.Framework
@@ -65,35 +63,35 @@ namespace OpenSim.Framework
65 // a "long" call for warning & debugging purposes 63 // a "long" call for warning & debugging purposes
66 public const int LongCallTime = 500; 64 public const int LongCallTime = 500;
67 65
68 /// <summary> 66// /// <summary>
69 /// Send LLSD to an HTTP client in application/llsd+json form 67// /// Send LLSD to an HTTP client in application/llsd+json form
70 /// </summary> 68// /// </summary>
71 /// <param name="response">HTTP response to send the data in</param> 69// /// <param name="response">HTTP response to send the data in</param>
72 /// <param name="body">LLSD to send to the client</param> 70// /// <param name="body">LLSD to send to the client</param>
73 public static void SendJSONResponse(OSHttpResponse response, OSDMap body) 71// public static void SendJSONResponse(OSHttpResponse response, OSDMap body)
74 { 72// {
75 byte[] responseData = Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(body)); 73// byte[] responseData = Encoding.UTF8.GetBytes(OSDParser.SerializeJsonString(body));
76 74//
77 response.ContentEncoding = Encoding.UTF8; 75// response.ContentEncoding = Encoding.UTF8;
78 response.ContentLength = responseData.Length; 76// response.ContentLength = responseData.Length;
79 response.ContentType = "application/llsd+json"; 77// response.ContentType = "application/llsd+json";
80 response.Body.Write(responseData, 0, responseData.Length); 78// response.Body.Write(responseData, 0, responseData.Length);
81 } 79// }
82 80//
83 /// <summary> 81// /// <summary>
84 /// Send LLSD to an HTTP client in application/llsd+xml form 82// /// Send LLSD to an HTTP client in application/llsd+xml form
85 /// </summary> 83// /// </summary>
86 /// <param name="response">HTTP response to send the data in</param> 84// /// <param name="response">HTTP response to send the data in</param>
87 /// <param name="body">LLSD to send to the client</param> 85// /// <param name="body">LLSD to send to the client</param>
88 public static void SendXMLResponse(OSHttpResponse response, OSDMap body) 86// public static void SendXMLResponse(OSHttpResponse response, OSDMap body)
89 { 87// {
90 byte[] responseData = OSDParser.SerializeLLSDXmlBytes(body); 88// byte[] responseData = OSDParser.SerializeLLSDXmlBytes(body);
91 89//
92 response.ContentEncoding = Encoding.UTF8; 90// response.ContentEncoding = Encoding.UTF8;
93 response.ContentLength = responseData.Length; 91// response.ContentLength = responseData.Length;
94 response.ContentType = "application/llsd+xml"; 92// response.ContentType = "application/llsd+xml";
95 response.Body.Write(responseData, 0, responseData.Length); 93// response.Body.Write(responseData, 0, responseData.Length);
96 } 94// }
97 95
98 /// <summary> 96 /// <summary>
99 /// Make a GET or GET-like request to a web service that returns LLSD 97 /// Make a GET or GET-like request to a web service that returns LLSD
diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs
index e7ee8c4..5ff9a38 100644
--- a/OpenSim/Region/Application/OpenSim.cs
+++ b/OpenSim/Region/Application/OpenSim.cs
@@ -37,6 +37,7 @@ using Nini.Config;
37using OpenMetaverse; 37using OpenMetaverse;
38using OpenSim.Framework; 38using OpenSim.Framework;
39using OpenSim.Framework.Console; 39using OpenSim.Framework.Console;
40using OpenSim.Framework.Servers;
40using OpenSim.Framework.Statistics; 41using OpenSim.Framework.Statistics;
41using OpenSim.Region.Framework.Interfaces; 42using OpenSim.Region.Framework.Interfaces;
42using OpenSim.Region.Framework.Scenes; 43using OpenSim.Region.Framework.Scenes;
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
index 2ca02c5..a5209b7 100644
--- a/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
+++ b/OpenSim/Region/ClientStack/Linden/Caps/EventQueue/Tests/EventQueueTests.cs
@@ -34,6 +34,7 @@ using NUnit.Framework;
34using OpenMetaverse; 34using OpenMetaverse;
35using OpenMetaverse.Packets; 35using OpenMetaverse.Packets;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Servers;
37using OpenSim.Framework.Servers.HttpServer; 38using OpenSim.Framework.Servers.HttpServer;
38using OpenSim.Region.ClientStack.Linden; 39using OpenSim.Region.ClientStack.Linden;
39using OpenSim.Region.CoreModules.Framework; 40using OpenSim.Region.CoreModules.Framework;
diff --git a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs
index f343f80..80957b4 100644
--- a/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Dialog/DialogModule.cs
@@ -201,7 +201,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
201 } 201 }
202 else 202 else
203 { 203 {
204 OpenSim.Framework.Console.MainConsole.Instance.Output( 204 MainConsole.Instance.Output(
205 "Usage: alert <message> | alert-user <first> <last> <message>"); 205 "Usage: alert <message> | alert-user <first> <last> <message>");
206 return; 206 return;
207 } 207 }
diff --git a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
index 4350cde..a5131ec 100644
--- a/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Friends/FriendsModule.cs
@@ -36,6 +36,7 @@ using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Servers.HttpServer; 37using OpenSim.Framework.Servers.HttpServer;
38using OpenSim.Framework.Communications; 38using OpenSim.Framework.Communications;
39using OpenSim.Framework.Servers;
39using OpenSim.Region.Framework.Interfaces; 40using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes; 41using OpenSim.Region.Framework.Scenes;
41using OpenSim.Services.Interfaces; 42using OpenSim.Services.Interfaces;
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs
index eb14603..72b448b 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/HGMessageTransferModule.cs
@@ -36,6 +36,7 @@ using Nwc.XmlRpc;
36using Mono.Addins; 36using Mono.Addins;
37using OpenMetaverse; 37using OpenMetaverse;
38using OpenSim.Framework; 38using OpenSim.Framework;
39using OpenSim.Framework.Servers;
39using OpenSim.Region.Framework.Interfaces; 40using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes; 41using OpenSim.Region.Framework.Scenes;
41using GridRegion = OpenSim.Services.Interfaces.GridRegion; 42using GridRegion = OpenSim.Services.Interfaces.GridRegion;
diff --git a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
index c1caf44..ff74354 100644
--- a/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/InstantMessage/MessageTransferModule.cs
@@ -34,6 +34,7 @@ using Nini.Config;
34using Nwc.XmlRpc; 34using Nwc.XmlRpc;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Servers;
37using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
38using OpenSim.Region.Framework.Scenes; 39using OpenSim.Region.Framework.Scenes;
39using GridRegion = OpenSim.Services.Interfaces.GridRegion; 40using GridRegion = OpenSim.Services.Interfaces.GridRegion;
diff --git a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
index 7ae304c..babeaab 100644
--- a/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Caps/CapabilitiesModule.cs
@@ -35,6 +35,7 @@ using Mono.Addins;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Console; 37using OpenSim.Framework.Console;
38using OpenSim.Framework.Servers;
38using OpenSim.Region.Framework.Interfaces; 39using OpenSim.Region.Framework.Interfaces;
39using OpenSim.Region.Framework.Scenes; 40using OpenSim.Region.Framework.Scenes;
40using Caps=OpenSim.Framework.Capabilities.Caps; 41using Caps=OpenSim.Framework.Capabilities.Caps;
diff --git a/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs b/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs
index a75d94a..3f466be 100644
--- a/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/Monitoring/MonitorModule.cs
@@ -33,6 +33,7 @@ using log4net;
33using Nini.Config; 33using Nini.Config;
34using OpenMetaverse; 34using OpenMetaverse;
35using OpenSim.Framework; 35using OpenSim.Framework;
36using OpenSim.Framework.Servers;
36using OpenSim.Region.CoreModules.Framework.Monitoring.Alerts; 37using OpenSim.Region.CoreModules.Framework.Monitoring.Alerts;
37using OpenSim.Region.CoreModules.Framework.Monitoring.Monitors; 38using OpenSim.Region.CoreModules.Framework.Monitoring.Monitors;
38using OpenSim.Region.Framework.Interfaces; 39using OpenSim.Region.Framework.Interfaces;
diff --git a/OpenSim/Region/CoreModules/InterGrid/OGSRadmin.cs b/OpenSim/Region/CoreModules/InterGrid/OGSRadmin.cs
index b7d3904..2cc0a07 100644
--- a/OpenSim/Region/CoreModules/InterGrid/OGSRadmin.cs
+++ b/OpenSim/Region/CoreModules/InterGrid/OGSRadmin.cs
@@ -37,6 +37,7 @@ using Nwc.XmlRpc;
37using OpenMetaverse; 37using OpenMetaverse;
38using OpenSim.Framework; 38using OpenSim.Framework;
39using OpenSim.Framework.Communications; 39using OpenSim.Framework.Communications;
40using OpenSim.Framework.Servers;
40using OpenSim.Region.Framework.Interfaces; 41using OpenSim.Region.Framework.Interfaces;
41using OpenSim.Region.Framework.Scenes; 42using OpenSim.Region.Framework.Scenes;
42 43
diff --git a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs
index 07999d1..f367739 100644
--- a/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs
+++ b/OpenSim/Region/CoreModules/InterGrid/OpenGridProtocolModule.cs
@@ -40,6 +40,7 @@ using OpenMetaverse;
40using OpenMetaverse.StructuredData; 40using OpenMetaverse.StructuredData;
41using OpenSim.Framework; 41using OpenSim.Framework;
42using OpenSim.Framework.Capabilities; 42using OpenSim.Framework.Capabilities;
43using OpenSim.Framework.Servers;
43using OpenSim.Region.Framework.Interfaces; 44using OpenSim.Region.Framework.Interfaces;
44using OpenSim.Region.Framework.Scenes; 45using OpenSim.Region.Framework.Scenes;
45using Caps=OpenSim.Framework.Capabilities.Caps; 46using Caps=OpenSim.Framework.Capabilities.Caps;
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index b6af1f2..458426b 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -34,6 +34,7 @@ using log4net;
34using Nini.Config; 34using Nini.Config;
35using OpenMetaverse; 35using OpenMetaverse;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Servers;
37using OpenSim.Framework.Servers.HttpServer; 38using OpenSim.Framework.Servers.HttpServer;
38using OpenSim.Region.Framework.Interfaces; 39using OpenSim.Region.Framework.Interfaces;
39using OpenSim.Region.Framework.Scenes; 40using OpenSim.Region.Framework.Scenes;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs
index 422f394..5541684 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Asset/AssetServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs
index 2b5beba..ccf2275 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Authentication/AuthenticationServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs
index f29c074..0e16e5a 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Grid/GridInfoServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
index a5b5637..89abbb2 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Hypergrid/HypergridServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs
index 53a8ace..831ea27 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Inventory/InventoryServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Interfaces; 35using OpenSim.Region.Framework.Interfaces;
35using OpenSim.Region.Framework.Scenes; 36using OpenSim.Region.Framework.Scenes;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
@@ -59,9 +60,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Inventory
59 { 60 {
60 m_log.Info("[INVENTORY IN CONNECTOR]: Inventory Service In Connector enabled"); 61 m_log.Info("[INVENTORY IN CONNECTOR]: Inventory Service In Connector enabled");
61 } 62 }
62
63 } 63 }
64
65 } 64 }
66 65
67 public void PostInitialise() 66 public void PostInitialise()
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs
index fc64203..c8f45f6 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Land/LandServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs
index f759470..ecdb380 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Login/LLLoginServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/MapImage/MapImageServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/MapImage/MapImageServiceInConnectorModule.cs
index e5af1f4..d38af23 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/MapImage/MapImageServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/MapImage/MapImageServiceInConnectorModule.cs
@@ -32,6 +32,7 @@ using log4net;
32using Mono.Addins; 32using Mono.Addins;
33using Nini.Config; 33using Nini.Config;
34using OpenSim.Framework; 34using OpenSim.Framework;
35using OpenSim.Framework.Servers;
35using OpenSim.Region.Framework.Scenes; 36using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces; 37using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Server.Base; 38using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
index 5c32632..3fd89b9 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Neighbour/NeighbourServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs
index 86b4926..0a5275d 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsIn/Simulation/SimulationServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Region.Framework.Scenes; 35using OpenSim.Region.Framework.Scenes;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Server.Base; 37using OpenSim.Server.Base;
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index c1097e4..6e20d14 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -2137,10 +2137,6 @@ namespace OpenSim.Region.Framework.Scenes
2137 public void PhysicsCollision(EventArgs e) 2137 public void PhysicsCollision(EventArgs e)
2138 { 2138 {
2139 // single threaded here 2139 // single threaded here
2140 if (e == null)
2141 {
2142 return;
2143 }
2144 2140
2145 CollisionEventUpdate a = (CollisionEventUpdate)e; 2141 CollisionEventUpdate a = (CollisionEventUpdate)e;
2146 Dictionary<uint, ContactPoint> collissionswith = a.m_objCollisionList; 2142 Dictionary<uint, ContactPoint> collissionswith = a.m_objCollisionList;
@@ -2302,6 +2298,7 @@ namespace OpenSim.Region.Framework.Scenes
2302 }); 2298 });
2303 } 2299 }
2304 } 2300 }
2301
2305 if (colliding.Count > 0) 2302 if (colliding.Count > 0)
2306 { 2303 {
2307 StartCollidingMessage.Colliders = colliding; 2304 StartCollidingMessage.Colliders = colliding;
@@ -2309,10 +2306,11 @@ namespace OpenSim.Region.Framework.Scenes
2309 if (m_parentGroup.Scene == null) 2306 if (m_parentGroup.Scene == null)
2310 return; 2307 return;
2311 2308
2312 if (m_parentGroup.PassCollision == true) 2309// if (m_parentGroup.PassCollision == true)
2313 { 2310// {
2314 //TODO: Add pass to root prim! 2311// //TODO: Add pass to root prim!
2315 } 2312// }
2313
2316 m_parentGroup.Scene.EventManager.TriggerScriptCollidingStart(LocalId, StartCollidingMessage); 2314 m_parentGroup.Scene.EventManager.TriggerScriptCollidingStart(LocalId, StartCollidingMessage);
2317 } 2315 }
2318 } 2316 }
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 9970763..0f13050 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -3649,9 +3649,6 @@ namespace OpenSim.Region.Framework.Scenes
3649 // Event called by the physics plugin to tell the avatar about a collision. 3649 // Event called by the physics plugin to tell the avatar about a collision.
3650 private void PhysicsCollisionUpdate(EventArgs e) 3650 private void PhysicsCollisionUpdate(EventArgs e)
3651 { 3651 {
3652 if (e == null)
3653 return;
3654
3655 //if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f)) 3652 //if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f))
3656 // The Physics Scene will send updates every 500 ms grep: PhysicsActor.SubscribeEvents( 3653 // The Physics Scene will send updates every 500 ms grep: PhysicsActor.SubscribeEvents(
3657 // as of this comment the interval is set in AddToPhysicalScene 3654 // as of this comment the interval is set in AddToPhysicalScene
diff --git a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs
index 39bb43a..c5a76b2 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/ScenePresenceTeleportTests.cs
@@ -32,6 +32,7 @@ using NUnit.Framework;
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Communications; 34using OpenSim.Framework.Communications;
35using OpenSim.Framework.Servers;
35using OpenSim.Region.Framework.Interfaces; 36using OpenSim.Region.Framework.Interfaces;
36using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation; 37using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
37using OpenSim.Tests.Common; 38using OpenSim.Tests.Common;
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
index d49a489..913d934 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
@@ -34,6 +34,7 @@ using log4net;
34using Nini.Config; 34using Nini.Config;
35using Nwc.XmlRpc; 35using Nwc.XmlRpc;
36using OpenSim.Framework; 36using OpenSim.Framework;
37using OpenSim.Framework.Servers;
37using OpenSim.Region.Framework.Interfaces; 38using OpenSim.Region.Framework.Interfaces;
38using OpenSim.Region.Framework.Scenes; 39using OpenSim.Region.Framework.Scenes;
39 40
diff --git a/OpenSim/Region/OptionalModules/ServiceConnectorsIn/Freeswitch/FreeswitchServiceInConnectorModule.cs b/OpenSim/Region/OptionalModules/ServiceConnectorsIn/Freeswitch/FreeswitchServiceInConnectorModule.cs
index 97fa63c..74c5139 100644
--- a/OpenSim/Region/OptionalModules/ServiceConnectorsIn/Freeswitch/FreeswitchServiceInConnectorModule.cs
+++ b/OpenSim/Region/OptionalModules/ServiceConnectorsIn/Freeswitch/FreeswitchServiceInConnectorModule.cs
@@ -31,6 +31,7 @@ using System.Collections.Generic;
31using log4net; 31using log4net;
32using Nini.Config; 32using Nini.Config;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using OpenSim.Framework.Servers;
34using OpenSim.Framework.Servers.HttpServer; 35using OpenSim.Framework.Servers.HttpServer;
35using OpenSim.Region.Framework.Scenes; 36using OpenSim.Region.Framework.Scenes;
36using OpenSim.Region.Framework.Interfaces; 37using OpenSim.Region.Framework.Interfaces;
diff --git a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs
index d469548..54d4e92 100644
--- a/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs
+++ b/OpenSim/Region/OptionalModules/World/MoneyModule/SampleMoneyModule.cs
@@ -36,7 +36,7 @@ using Nwc.XmlRpc;
36using Mono.Addins; 36using Mono.Addins;
37using OpenMetaverse; 37using OpenMetaverse;
38using OpenSim.Framework; 38using OpenSim.Framework;
39 39using OpenSim.Framework.Servers;
40using OpenSim.Framework.Servers.HttpServer; 40using OpenSim.Framework.Servers.HttpServer;
41using OpenSim.Region.Framework.Interfaces; 41using OpenSim.Region.Framework.Interfaces;
42using OpenSim.Region.Framework.Scenes; 42using OpenSim.Region.Framework.Scenes;
diff --git a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs
index cee8851..48c242d 100644
--- a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs
+++ b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs
@@ -36,6 +36,7 @@ using Nini.Config;
36using OpenMetaverse; 36using OpenMetaverse;
37using OpenMetaverse.Imaging; 37using OpenMetaverse.Imaging;
38using OpenSim.Framework; 38using OpenSim.Framework;
39using OpenSim.Framework.Servers;
39using OpenSim.Region.Framework.Interfaces; 40using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes; 41using OpenSim.Region.Framework.Scenes;
41using OpenSim.Server.Base; 42using OpenSim.Server.Base;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index 682eb80..9a6857b 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -443,7 +443,7 @@ public class BSCharacter : PhysicsActor
443 443
444 Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>(); 444 Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>();
445 contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth)); 445 contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
446 CollisionEventUpdate args = new CollisionEventUpdate(LocalID, (int)type, 1, contactPoints); 446 CollisionEventUpdate args = new CollisionEventUpdate(contactPoints);
447 base.SendCollisionUpdate(args); 447 base.SendCollisionUpdate(args);
448 } 448 }
449 449
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index bb8d601..8782e62 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -1350,7 +1350,7 @@ public sealed class BSPrim : PhysicsActor
1350 // create the event for the collision 1350 // create the event for the collision
1351 Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>(); 1351 Dictionary<uint, ContactPoint> contactPoints = new Dictionary<uint, ContactPoint>();
1352 contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth)); 1352 contactPoints.Add(collidingWith, new ContactPoint(contactPoint, contactNormal, pentrationDepth));
1353 CollisionEventUpdate args = new CollisionEventUpdate(LocalID, (int)type, 1, contactPoints); 1353 CollisionEventUpdate args = new CollisionEventUpdate(contactPoints);
1354 base.SendCollisionUpdate(args); 1354 base.SendCollisionUpdate(args);
1355 } 1355 }
1356} 1356}
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
index 96dcfb6..362f997 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -66,42 +66,29 @@ namespace OpenSim.Region.Physics.Manager
66 } 66 }
67 } 67 }
68 68
69 /// <summary>
70 /// Used to pass collision information to OnCollisionUpdate listeners.
71 /// </summary>
69 public class CollisionEventUpdate : EventArgs 72 public class CollisionEventUpdate : EventArgs
70 { 73 {
71 // Raising the event on the object, so don't need to provide location.. further up the tree knows that info. 74 /// <summary>
75 /// Number of collision events in this update.
76 /// </summary>
77 public int Count { get { return m_objCollisionList.Count; } }
72 78
73 public int m_colliderType; 79 public Dictionary<uint, ContactPoint> m_objCollisionList;
74 public int m_GenericStartEnd;
75 //public uint m_LocalID;
76 public Dictionary<uint, ContactPoint> m_objCollisionList = new Dictionary<uint, ContactPoint>();
77 80
78 public CollisionEventUpdate(uint localID, int colliderType, int GenericStartEnd, Dictionary<uint, ContactPoint> objCollisionList) 81 public CollisionEventUpdate(Dictionary<uint, ContactPoint> objCollisionList)
79 { 82 {
80 m_colliderType = colliderType;
81 m_GenericStartEnd = GenericStartEnd;
82 m_objCollisionList = objCollisionList; 83 m_objCollisionList = objCollisionList;
83 } 84 }
84 85
85 public CollisionEventUpdate() 86 public CollisionEventUpdate()
86 { 87 {
87 m_colliderType = (int) ActorTypes.Unknown;
88 m_GenericStartEnd = 1;
89 m_objCollisionList = new Dictionary<uint, ContactPoint>(); 88 m_objCollisionList = new Dictionary<uint, ContactPoint>();
90 } 89 }
91 90
92 public int collidertype 91 public void AddCollider(uint localID, ContactPoint contact)
93 {
94 get { return m_colliderType; }
95 set { m_colliderType = value; }
96 }
97
98 public int GenericStartEnd
99 {
100 get { return m_GenericStartEnd; }
101 set { m_GenericStartEnd = value; }
102 }
103
104 public void addCollider(uint localID, ContactPoint contact)
105 { 92 {
106 if (!m_objCollisionList.ContainsKey(localID)) 93 if (!m_objCollisionList.ContainsKey(localID))
107 { 94 {
@@ -113,6 +100,14 @@ namespace OpenSim.Region.Physics.Manager
113 m_objCollisionList[localID] = contact; 100 m_objCollisionList[localID] = contact;
114 } 101 }
115 } 102 }
103
104 /// <summary>
105 /// Clear added collision events.
106 /// </summary>
107 public void Clear()
108 {
109 m_objCollisionList.Clear();
110 }
116 } 111 }
117 112
118 public abstract class PhysicsActor 113 public abstract class PhysicsActor
@@ -127,7 +122,13 @@ namespace OpenSim.Region.Physics.Manager
127 public event VelocityUpdate OnVelocityUpdate; 122 public event VelocityUpdate OnVelocityUpdate;
128 public event OrientationUpdate OnOrientationUpdate; 123 public event OrientationUpdate OnOrientationUpdate;
129 public event RequestTerseUpdate OnRequestTerseUpdate; 124 public event RequestTerseUpdate OnRequestTerseUpdate;
125
126 /// <summary>
127 /// Subscribers to this event must synchronously handle the dictionary of collisions received, since the event
128 /// object is reused in subsequent physics frames.
129 /// </summary>
130 public event CollisionUpdate OnCollisionUpdate; 130 public event CollisionUpdate OnCollisionUpdate;
131
131 public event OutOfBounds OnOutOfBounds; 132 public event OutOfBounds OnOutOfBounds;
132#pragma warning restore 67 133#pragma warning restore 67
133 134
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index e9bab66..c22d27f 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -1210,11 +1210,13 @@ namespace OpenSim.Region.Physics.OdePlugin
1210 { 1210 {
1211 m_requestedUpdateFrequency = ms; 1211 m_requestedUpdateFrequency = ms;
1212 m_eventsubscription = ms; 1212 m_eventsubscription = ms;
1213 CollisionEventsThisFrame.Clear();
1213 _parent_scene.AddCollisionEventReporting(this); 1214 _parent_scene.AddCollisionEventReporting(this);
1214 } 1215 }
1215 1216
1216 public override void UnSubscribeEvents() 1217 public override void UnSubscribeEvents()
1217 { 1218 {
1219 CollisionEventsThisFrame.Clear();
1218 _parent_scene.RemoveCollisionEventReporting(this); 1220 _parent_scene.RemoveCollisionEventReporting(this);
1219 m_requestedUpdateFrequency = 0; 1221 m_requestedUpdateFrequency = 0;
1220 m_eventsubscription = 0; 1222 m_eventsubscription = 0;
@@ -1227,7 +1229,7 @@ namespace OpenSim.Region.Physics.OdePlugin
1227// m_log.DebugFormat( 1229// m_log.DebugFormat(
1228// "[PHYSICS]: Adding collision event for {0}, collidedWith {1}, contact {2}", "", CollidedWith, contact); 1230// "[PHYSICS]: Adding collision event for {0}, collidedWith {1}, contact {2}", "", CollidedWith, contact);
1229 1231
1230 CollisionEventsThisFrame.addCollider(CollidedWith, contact); 1232 CollisionEventsThisFrame.AddCollider(CollidedWith, contact);
1231 } 1233 }
1232 } 1234 }
1233 1235
@@ -1235,11 +1237,9 @@ namespace OpenSim.Region.Physics.OdePlugin
1235 { 1237 {
1236 if (m_eventsubscription > m_requestedUpdateFrequency) 1238 if (m_eventsubscription > m_requestedUpdateFrequency)
1237 { 1239 {
1238 if (CollisionEventsThisFrame != null) 1240 base.SendCollisionUpdate(CollisionEventsThisFrame);
1239 { 1241
1240 base.SendCollisionUpdate(CollisionEventsThisFrame); 1242 CollisionEventsThisFrame.Clear();
1241 }
1242 CollisionEventsThisFrame = new CollisionEventUpdate();
1243 m_eventsubscription = 0; 1243 m_eventsubscription = 0;
1244 } 1244 }
1245 } 1245 }
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index 6638cbd..3a17511 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -191,7 +191,7 @@ namespace OpenSim.Region.Physics.OdePlugin
191 private d.Mass pMass; 191 private d.Mass pMass;
192 192
193 private int m_eventsubscription; 193 private int m_eventsubscription;
194 private CollisionEventUpdate CollisionEventsThisFrame; 194 private CollisionEventUpdate CollisionEventsThisFrame = new CollisionEventUpdate();
195 195
196 private IntPtr m_linkJoint = IntPtr.Zero; 196 private IntPtr m_linkJoint = IntPtr.Zero;
197 197
@@ -3020,23 +3020,13 @@ Console.WriteLine(" JointCreateFixed");
3020 3020
3021 public void AddCollisionEvent(uint CollidedWith, ContactPoint contact) 3021 public void AddCollisionEvent(uint CollidedWith, ContactPoint contact)
3022 { 3022 {
3023 if (CollisionEventsThisFrame == null) 3023 CollisionEventsThisFrame.AddCollider(CollidedWith, contact);
3024 CollisionEventsThisFrame = new CollisionEventUpdate();
3025
3026 CollisionEventsThisFrame.addCollider(CollidedWith, contact);
3027 } 3024 }
3028 3025
3029 public void SendCollisions() 3026 public void SendCollisions()
3030 { 3027 {
3031 if (CollisionEventsThisFrame == null) 3028 if (CollisionEventsThisFrame.Count > 0)
3032 return; 3029 base.SendCollisionUpdate(CollisionEventsThisFrame);
3033
3034 base.SendCollisionUpdate(CollisionEventsThisFrame);
3035
3036 if (CollisionEventsThisFrame.m_objCollisionList.Count == 0)
3037 CollisionEventsThisFrame = null;
3038 else
3039 CollisionEventsThisFrame = new CollisionEventUpdate();
3040 } 3030 }
3041 3031
3042 public override bool SubscribedEvents() 3032 public override bool SubscribedEvents()
diff --git a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
index 0810ae0..c3279c6 100644
--- a/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
+++ b/OpenSim/Region/Physics/OdePlugin/OdeScene.cs
@@ -1633,6 +1633,8 @@ namespace OpenSim.Region.Physics.OdePlugin
1633 /// <param name="obj"></param> 1633 /// <param name="obj"></param>
1634 internal void AddCollisionEventReporting(PhysicsActor obj) 1634 internal void AddCollisionEventReporting(PhysicsActor obj)
1635 { 1635 {
1636// m_log.DebugFormat("[PHYSICS]: Adding {0} to collision event reporting", obj.SOPName);
1637
1636 lock (_collisionEventPrim) 1638 lock (_collisionEventPrim)
1637 { 1639 {
1638 if (!_collisionEventPrim.Contains(obj)) 1640 if (!_collisionEventPrim.Contains(obj))
@@ -1646,11 +1648,10 @@ namespace OpenSim.Region.Physics.OdePlugin
1646 /// <param name="obj"></param> 1648 /// <param name="obj"></param>
1647 internal void RemoveCollisionEventReporting(PhysicsActor obj) 1649 internal void RemoveCollisionEventReporting(PhysicsActor obj)
1648 { 1650 {
1651// m_log.DebugFormat("[PHYSICS]: Removing {0} from collision event reporting", obj.SOPName);
1652
1649 lock (_collisionEventPrim) 1653 lock (_collisionEventPrim)
1650 { 1654 _collisionEventPrim.Remove(obj);
1651 if (!_collisionEventPrim.Contains(obj))
1652 _collisionEventPrim.Remove(obj);
1653 }
1654 } 1655 }
1655 1656
1656 #region Add/Remove Entities 1657 #region Add/Remove Entities
@@ -2859,14 +2860,14 @@ Console.WriteLine("AddPhysicsActorTaint to " + taintedprim.Name);
2859 { 2860 {
2860 //if (timeStep < 0.2f) 2861 //if (timeStep < 0.2f)
2861 { 2862 {
2862 foreach (OdePrim actor in _activeprims) 2863 foreach (OdePrim prim in _activeprims)
2863 { 2864 {
2864 if (actor.IsPhysical && (d.BodyIsEnabled(actor.Body) || !actor._zeroFlag)) 2865 if (prim.IsPhysical && (d.BodyIsEnabled(prim.Body) || !prim._zeroFlag))
2865 { 2866 {
2866 actor.UpdatePositionAndVelocity(); 2867 prim.UpdatePositionAndVelocity();
2867 2868
2868 if (SupportsNINJAJoints) 2869 if (SupportsNINJAJoints)
2869 SimulateActorPendingJoints(actor); 2870 SimulateActorPendingJoints(prim);
2870 } 2871 }
2871 } 2872 }
2872 } 2873 }
diff --git a/OpenSim/Server/Base/HttpServerBase.cs b/OpenSim/Server/Base/HttpServerBase.cs
index bb5ce96..d471559 100644
--- a/OpenSim/Server/Base/HttpServerBase.cs
+++ b/OpenSim/Server/Base/HttpServerBase.cs
@@ -31,6 +31,7 @@ using System.Threading;
31using System.Reflection; 31using System.Reflection;
32using OpenSim.Framework; 32using OpenSim.Framework;
33using OpenSim.Framework.Console; 33using OpenSim.Framework.Console;
34using OpenSim.Framework.Servers;
34using OpenSim.Framework.Servers.HttpServer; 35using OpenSim.Framework.Servers.HttpServer;
35using log4net; 36using log4net;
36using Nini.Config; 37using Nini.Config;
diff --git a/OpenSim/Server/Base/ServicesServerBase.cs b/OpenSim/Server/Base/ServicesServerBase.cs
index 2652ff2..36e6665 100644
--- a/OpenSim/Server/Base/ServicesServerBase.cs
+++ b/OpenSim/Server/Base/ServicesServerBase.cs
@@ -30,6 +30,7 @@ using System.IO;
30using System.Xml; 30using System.Xml;
31using System.Threading; 31using System.Threading;
32using System.Reflection; 32using System.Reflection;
33using OpenSim.Framework;
33using OpenSim.Framework.Console; 34using OpenSim.Framework.Console;
34using log4net; 35using log4net;
35using log4net.Config; 36using log4net.Config;
@@ -208,7 +209,7 @@ namespace OpenSim.Server.Base
208 } 209 }
209 else 210 else
210 { 211 {
211 consoleAppender.Console = MainConsole.Instance; 212 consoleAppender.Console = (ConsoleBase)MainConsole.Instance;
212 213
213 if (null == consoleAppender.Threshold) 214 if (null == consoleAppender.Threshold)
214 consoleAppender.Threshold = Level.All; 215 consoleAppender.Threshold = Level.All;
diff --git a/OpenSim/Tools/pCampBot/pCampBot.cs b/OpenSim/Tools/pCampBot/pCampBot.cs
index 002a294..77110bf 100644
--- a/OpenSim/Tools/pCampBot/pCampBot.cs
+++ b/OpenSim/Tools/pCampBot/pCampBot.cs
@@ -27,6 +27,7 @@
27 27
28using System; 28using System;
29using Nini.Config; 29using Nini.Config;
30using OpenSim.Framework;
30using OpenSim.Framework.Console; 31using OpenSim.Framework.Console;
31 32
32namespace pCampBot 33namespace pCampBot