aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorMelanie2009-11-28 09:26:00 +0000
committerMelanie2009-11-28 09:26:00 +0000
commitd3e7a5293310651ea8adf28327e1cb9840bcf9d7 (patch)
tree044fde70d244eecd8c1344eb973aa8d6e86e249b /OpenSim/Region
parentReset update flag when a SOG is deleted. This fixes llDie(); (diff)
parentAdd some conditionals to references to the WorldComm module, so that the (diff)
downloadopensim-SC_OLD-d3e7a5293310651ea8adf28327e1cb9840bcf9d7.zip
opensim-SC_OLD-d3e7a5293310651ea8adf28327e1cb9840bcf9d7.tar.gz
opensim-SC_OLD-d3e7a5293310651ea8adf28327e1cb9840bcf9d7.tar.bz2
opensim-SC_OLD-d3e7a5293310651ea8adf28327e1cb9840bcf9d7.tar.xz
Merge branch 'master' into careminster
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs2
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs9
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs71
-rw-r--r--OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs9
-rw-r--r--OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs7
-rw-r--r--OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs17
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs10
-rw-r--r--OpenSim/Region/Framework/Scenes/SimStatsReporter.cs10
-rw-r--r--OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs9
-rw-r--r--OpenSim/Region/OptionalModules/Python/PythonAPI/Console.cs48
-rw-r--r--OpenSim/Region/OptionalModules/Python/PythonModule.cs71
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs3
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs23
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs5
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs2
15 files changed, 107 insertions, 189 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index ac16b02..b588a2e 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -13593,7 +13593,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
13593 if (handlerGodKickUser != null) 13593 if (handlerGodKickUser != null)
13594 { 13594 {
13595 handlerGodKickUser(gkupack.UserInfo.GodID, gkupack.UserInfo.GodSessionID, 13595 handlerGodKickUser(gkupack.UserInfo.GodID, gkupack.UserInfo.GodSessionID,
13596 gkupack.UserInfo.AgentID, (uint)0, gkupack.UserInfo.Reason); 13596 gkupack.UserInfo.AgentID, gkupack.UserInfo.KickFlags, gkupack.UserInfo.Reason,gkupack.UserInfo);
13597 } 13597 }
13598 } 13598 }
13599 else 13599 else
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
index 98bb4f7..85961b9 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs
@@ -138,6 +138,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
138 /// whether or not to sleep</summary> 138 /// whether or not to sleep</summary>
139 private bool m_packetSent; 139 private bool m_packetSent;
140 140
141 /// <summary>Environment.TickCount of the last time that packet stats were reported to the scene</summary>
142 private int m_elapsedMSSinceLastStatReport = 0;
141 /// <summary>Environment.TickCount of the last time the outgoing packet handler executed</summary> 143 /// <summary>Environment.TickCount of the last time the outgoing packet handler executed</summary>
142 private int m_tickLastOutgoingPacketHandler; 144 private int m_tickLastOutgoingPacketHandler;
143 /// <summary>Keeps track of the number of elapsed milliseconds since the last time the outgoing packet handler looped</summary> 145 /// <summary>Keeps track of the number of elapsed milliseconds since the last time the outgoing packet handler looped</summary>
@@ -246,6 +248,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
246 // Start the packet processing threads 248 // Start the packet processing threads
247 Watchdog.StartThread(IncomingPacketHandler, "Incoming Packets (" + m_scene.RegionInfo.RegionName + ")", ThreadPriority.Normal, false); 249 Watchdog.StartThread(IncomingPacketHandler, "Incoming Packets (" + m_scene.RegionInfo.RegionName + ")", ThreadPriority.Normal, false);
248 Watchdog.StartThread(OutgoingPacketHandler, "Outgoing Packets (" + m_scene.RegionInfo.RegionName + ")", ThreadPriority.Normal, false); 250 Watchdog.StartThread(OutgoingPacketHandler, "Outgoing Packets (" + m_scene.RegionInfo.RegionName + ")", ThreadPriority.Normal, false);
251 m_elapsedMSSinceLastStatReport = Environment.TickCount;
249 } 252 }
250 253
251 public new void Stop() 254 public new void Stop()
@@ -737,6 +740,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP
737 // We don't need to do anything else with ping checks 740 // We don't need to do anything else with ping checks
738 StartPingCheckPacket startPing = (StartPingCheckPacket)packet; 741 StartPingCheckPacket startPing = (StartPingCheckPacket)packet;
739 CompletePing(udpClient, startPing.PingID.PingID); 742 CompletePing(udpClient, startPing.PingID.PingID);
743
744 if ((Environment.TickCount - m_elapsedMSSinceLastStatReport) >= 3000)
745 {
746 udpClient.SendPacketStats();
747 m_elapsedMSSinceLastStatReport = Environment.TickCount;
748 }
740 return; 749 return;
741 } 750 }
742 else if (packet.Type == PacketType.CompletePingCheck) 751 else if (packet.Type == PacketType.CompletePingCheck)
diff --git a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
index 273c128..7e1bed5 100644
--- a/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Gods/GodsModule.cs
@@ -98,7 +98,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods
98 /// <param name="godID">The person doing the kicking</param> 98 /// <param name="godID">The person doing the kicking</param>
99 /// <param name="sessionID">The session of the person doing the kicking</param> 99 /// <param name="sessionID">The session of the person doing the kicking</param>
100 /// <param name="agentID">the person that is being kicked</param> 100 /// <param name="agentID">the person that is being kicked</param>
101 /// <param name="kickflags">This isn't used apparently</param> 101 /// <param name="kickflags">Tells what to do to the user</param>
102 /// <param name="reason">The message to send to the user after it's been turned into a field</param> 102 /// <param name="reason">The message to send to the user after it's been turned into a field</param>
103 public void KickUser(UUID godID, UUID sessionID, UUID agentID, uint kickflags, byte[] reason) 103 public void KickUser(UUID godID, UUID sessionID, UUID agentID, uint kickflags, byte[] reason)
104 { 104 {
@@ -110,39 +110,56 @@ namespace OpenSim.Region.CoreModules.Avatar.Gods
110 { 110 {
111 if (m_scene.Permissions.IsGod(godID)) 111 if (m_scene.Permissions.IsGod(godID))
112 { 112 {
113 if (agentID == kickUserID) 113 if (kickflags == 0)
114 { 114 {
115 string reasonStr = Utils.BytesToString(reason); 115 if (agentID == kickUserID)
116 {
117 string reasonStr = Utils.BytesToString(reason);
116 118
117 m_scene.ForEachClient( 119 m_scene.ForEachClient(
118 delegate(IClientAPI controller) 120 delegate(IClientAPI controller)
119 { 121 {
120 if (controller.AgentId != godID) 122 if (controller.AgentId != godID)
121 controller.Kick(reasonStr); 123 controller.Kick(reasonStr);
122 } 124 }
123 ); 125 );
124 126
125 // This is a bit crude. It seems the client will be null before it actually stops the thread 127 // This is a bit crude. It seems the client will be null before it actually stops the thread
126 // The thread will kill itself eventually :/ 128 // The thread will kill itself eventually :/
127 // Is there another way to make sure *all* clients get this 'inter region' message? 129 // Is there another way to make sure *all* clients get this 'inter region' message?
128 m_scene.ForEachScenePresence( 130 m_scene.ForEachScenePresence(
129 delegate(ScenePresence p) 131 delegate(ScenePresence p)
130 {
131 if (p.UUID != godID && !p.IsChildAgent)
132 { 132 {
133 // Possibly this should really be p.Close() though that method doesn't send a close 133 if (p.UUID != godID && !p.IsChildAgent)
134 // to the client 134 {
135 p.ControllingClient.Close(); 135 // Possibly this should really be p.Close() though that method doesn't send a close
136 // to the client
137 p.ControllingClient.Close();
138 }
136 } 139 }
137 } 140 );
138 ); 141 }
142 else
143 {
144 m_scene.SceneGraph.removeUserCount(!sp.IsChildAgent);
145
146 sp.ControllingClient.Kick(Utils.BytesToString(reason));
147 sp.ControllingClient.Close();
148 }
139 } 149 }
140 else 150
151 if (kickflags == 1)
141 { 152 {
142 m_scene.SceneGraph.removeUserCount(!sp.IsChildAgent); 153 sp.AllowMovement = false;
143 154 m_dialogModule.SendAlertToUser(agentID, Utils.BytesToString(reason));
144 sp.ControllingClient.Kick(Utils.BytesToString(reason)); 155 m_dialogModule.SendAlertToUser(godID, "User Frozen");
145 sp.ControllingClient.Close(); 156 }
157
158 if (kickflags == 2)
159 {
160 sp.AllowMovement = true;
161 m_dialogModule.SendAlertToUser(agentID, Utils.BytesToString(reason));
162 m_dialogModule.SendAlertToUser(godID, "User Unfrozen");
146 } 163 }
147 } 164 }
148 else 165 else
diff --git a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs
index d4a28e2..60df2e7 100644
--- a/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/WorldComm/WorldCommModule.cs
@@ -602,9 +602,12 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
602 ListenerInfo info = 602 ListenerInfo info =
603 ListenerInfo.FromData(localID, itemID, hostID, item); 603 ListenerInfo.FromData(localID, itemID, hostID, item);
604 604
605 if (!m_listeners.ContainsKey((int)item[2])) 605 lock (m_listeners)
606 m_listeners.Add((int)item[2], new List<ListenerInfo>()); 606 {
607 m_listeners[(int)item[2]].Add(info); 607 if (!m_listeners.ContainsKey((int)item[2]))
608 m_listeners.Add((int)item[2], new List<ListenerInfo>());
609 m_listeners[(int)item[2]].Add(info);
610 }
608 611
609 idx+=6; 612 idx+=6;
610 } 613 }
diff --git a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
index 114dd13..3c0997c 100644
--- a/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
+++ b/OpenSim/Region/CoreModules/World/Archiver/ArchiveReadRequest.cs
@@ -453,6 +453,8 @@ namespace OpenSim.Region.CoreModules.World.Archiver
453 /// <summary> 453 /// <summary>
454 /// Resolve path to a working FileStream 454 /// Resolve path to a working FileStream
455 /// </summary> 455 /// </summary>
456 /// <param name="path"></param>
457 /// <returns></returns>
456 private Stream GetStream(string path) 458 private Stream GetStream(string path)
457 { 459 {
458 if (File.Exists(path)) 460 if (File.Exists(path))
@@ -499,8 +501,9 @@ namespace OpenSim.Region.CoreModules.World.Archiver
499 WebResponse response = request.GetResponse(); 501 WebResponse response = request.GetResponse();
500 Stream file = response.GetResponseStream(); 502 Stream file = response.GetResponseStream();
501 503
502 if (response.ContentType != "application/x-oar") 504 // justincc: gonna ignore the content type for now and just try anything
503 throw new Exception(String.Format("{0} does not identify an OAR file", uri.ToString())); 505 //if (response.ContentType != "application/x-oar")
506 // throw new Exception(String.Format("{0} does not identify an OAR file", uri.ToString()));
504 507
505 if (response.ContentLength == 0) 508 if (response.ContentLength == 0)
506 throw new Exception(String.Format("{0} returned an empty file", uri.ToString())); 509 throw new Exception(String.Format("{0} returned an empty file", uri.ToString()));
diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
index 013a0ef..c9b3071 100644
--- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
+++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs
@@ -800,30 +800,31 @@ namespace OpenSim.Region.CoreModules.World.Permissions
800 } 800 }
801 801
802 protected bool GenericParcelOwnerPermission(UUID user, ILandObject parcel, ulong groupPowers) 802 protected bool GenericParcelOwnerPermission(UUID user, ILandObject parcel, ulong groupPowers)
803 { 803 {
804 bool permission = false;
805
806 if (parcel.LandData.OwnerID == user) 804 if (parcel.LandData.OwnerID == user)
807 { 805 {
808 permission = true; 806 // Returning immediately so that group deeded objects on group deeded land don't trigger a NRE on
807 // the subsequent redundant checks when using lParcelMediaCommandList()
808 // See http://opensimulator.org/mantis/view.php?id=3999 for more details
809 return true;
809 } 810 }
810 811
811 if (parcel.LandData.IsGroupOwned && IsGroupMember(parcel.LandData.GroupID, user, groupPowers)) 812 if (parcel.LandData.IsGroupOwned && IsGroupMember(parcel.LandData.GroupID, user, groupPowers))
812 { 813 {
813 permission = true; 814 return true;
814 } 815 }
815 816
816 if (IsEstateManager(user)) 817 if (IsEstateManager(user))
817 { 818 {
818 permission = true; 819 return true;
819 } 820 }
820 821
821 if (IsAdministrator(user)) 822 if (IsAdministrator(user))
822 { 823 {
823 permission = true; 824 return true;
824 } 825 }
825 826
826 return permission; 827 return false;
827 } 828 }
828 829
829 protected bool GenericParcelPermission(UUID user, Vector3 pos, ulong groupPowers) 830 protected bool GenericParcelPermission(UUID user, Vector3 pos, ulong groupPowers)
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index 3034f9a..c12c81b 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -4410,16 +4410,6 @@ namespace OpenSim.Region.Framework.Scenes
4410 4410
4411 #endregion 4411 #endregion
4412 4412
4413 #region Avatar Appearance Default
4414
4415 public static void GetDefaultAvatarAppearance(out AvatarWearable[] wearables, out byte[] visualParams)
4416 {
4417 visualParams = AvatarAppearance.GetDefaultVisualParams();
4418 wearables = AvatarWearable.DefaultWearables;
4419 }
4420
4421 #endregion
4422
4423 public void RegionHandleRequest(IClientAPI client, UUID regionID) 4413 public void RegionHandleRequest(IClientAPI client, UUID regionID)
4424 { 4414 {
4425 ulong handle = 0; 4415 ulong handle = 0;
diff --git a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
index 56c6ed6..3b5455f 100644
--- a/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
+++ b/OpenSim/Region/Framework/Scenes/SimStatsReporter.cs
@@ -238,7 +238,7 @@ namespace OpenSim.Region.Framework.Scenes
238 sb[12].StatValue = m_otherMS / statsUpdateFactor; 238 sb[12].StatValue = m_otherMS / statsUpdateFactor;
239 239
240 sb[13].StatID = (uint)Stats.InPacketsPerSecond; 240 sb[13].StatID = (uint)Stats.InPacketsPerSecond;
241 sb[13].StatValue = (m_inPacketsPerSecond); 241 sb[13].StatValue = (m_inPacketsPerSecond / statsUpdateFactor);
242 242
243 sb[14].StatID = (uint)Stats.OutPacketsPerSecond; 243 sb[14].StatID = (uint)Stats.OutPacketsPerSecond;
244 sb[14].StatValue = (m_outPacketsPerSecond / statsUpdateFactor); 244 sb[14].StatValue = (m_outPacketsPerSecond / statsUpdateFactor);
@@ -285,8 +285,8 @@ namespace OpenSim.Region.Framework.Scenes
285 m_fps = 0; 285 m_fps = 0;
286 m_pfps = 0; 286 m_pfps = 0;
287 m_agentUpdates = 0; 287 m_agentUpdates = 0;
288 m_inPacketsPerSecond = 0; 288 //m_inPacketsPerSecond = 0;
289 m_outPacketsPerSecond = 0; 289 //m_outPacketsPerSecond = 0;
290 m_unAckedBytes = 0; 290 m_unAckedBytes = 0;
291 m_scriptLinesPerSecond = 0; 291 m_scriptLinesPerSecond = 0;
292 292
@@ -373,12 +373,12 @@ namespace OpenSim.Region.Framework.Scenes
373 373
374 public void AddInPackets(int numPackets) 374 public void AddInPackets(int numPackets)
375 { 375 {
376 m_inPacketsPerSecond += numPackets; 376 m_inPacketsPerSecond = numPackets;
377 } 377 }
378 378
379 public void AddOutPackets(int numPackets) 379 public void AddOutPackets(int numPackets)
380 { 380 {
381 m_outPacketsPerSecond += numPackets; 381 m_outPacketsPerSecond = numPackets;
382 } 382 }
383 383
384 public void AddunAckedBytes(int numBytes) 384 public void AddunAckedBytes(int numBytes)
diff --git a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
index 70e80bc..e664b44 100644
--- a/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
+++ b/OpenSim/Region/OptionalModules/Avatar/Chat/IRCBridgeModule.cs
@@ -69,13 +69,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
69 m_config = config.Configs["IRC"]; 69 m_config = config.Configs["IRC"];
70 if (m_config == null) 70 if (m_config == null)
71 { 71 {
72 m_log.InfoFormat("[IRC-Bridge] module not configured"); 72// m_log.InfoFormat("[IRC-Bridge] module not configured");
73 return; 73 return;
74 } 74 }
75 75
76 if (!m_config.GetBoolean("enabled", false)) 76 if (!m_config.GetBoolean("enabled", false))
77 { 77 {
78 m_log.InfoFormat("[IRC-Bridge] module disabled in configuration"); 78// m_log.InfoFormat("[IRC-Bridge] module disabled in configuration");
79 return; 79 return;
80 } 80 }
81 81
@@ -85,6 +85,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
85 } 85 }
86 86
87 m_pluginEnabled = true; 87 m_pluginEnabled = true;
88 m_log.InfoFormat("[IRC-Bridge]: Module enabled");
88 } 89 }
89 90
90 public void AddRegion(Scene scene) 91 public void AddRegion(Scene scene)
@@ -143,7 +144,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
143 144
144 public static XmlRpcResponse XmlRpcAdminMethod(XmlRpcRequest request, IPEndPoint remoteClient) 145 public static XmlRpcResponse XmlRpcAdminMethod(XmlRpcRequest request, IPEndPoint remoteClient)
145 { 146 {
146 m_log.Info("[IRC-Bridge]: XML RPC Admin Entry"); 147 m_log.Debug("[IRC-Bridge]: XML RPC Admin Entry");
147 148
148 XmlRpcResponse response = new XmlRpcResponse(); 149 XmlRpcResponse response = new XmlRpcResponse();
149 Hashtable responseData = new Hashtable(); 150 Hashtable responseData = new Hashtable();
@@ -188,7 +189,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Chat
188 } 189 }
189 catch (Exception e) 190 catch (Exception e)
190 { 191 {
191 m_log.InfoFormat("[IRC-Bridge] XML RPC Admin request failed : {0}", e.Message); 192 m_log.ErrorFormat("[IRC-Bridge] XML RPC Admin request failed : {0}", e.Message);
192 193
193 responseData["success"] = "false"; 194 responseData["success"] = "false";
194 responseData["error"] = e.Message; 195 responseData["error"] = e.Message;
diff --git a/OpenSim/Region/OptionalModules/Python/PythonAPI/Console.cs b/OpenSim/Region/OptionalModules/Python/PythonAPI/Console.cs
deleted file mode 100644
index a823ff9..0000000
--- a/OpenSim/Region/OptionalModules/Python/PythonAPI/Console.cs
+++ /dev/null
@@ -1,48 +0,0 @@
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.Reflection;
30using log4net;
31
32namespace OpenSim.Region.Modules.Python.PythonAPI
33{
34 class Console
35 {
36 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
37
38 public void WriteLine(string txt)
39 {
40 m_log.Info(txt);
41 }
42
43 public void WriteLine(string txt, params Object[] e)
44 {
45 m_log.Info(String.Format(txt, e));
46 }
47 }
48}
diff --git a/OpenSim/Region/OptionalModules/Python/PythonModule.cs b/OpenSim/Region/OptionalModules/Python/PythonModule.cs
deleted file mode 100644
index ce35363..0000000
--- a/OpenSim/Region/OptionalModules/Python/PythonModule.cs
+++ /dev/null
@@ -1,71 +0,0 @@
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.Reflection;
31using System.Security.Policy;
32using System.Text;
33using IronPython.Hosting;
34using log4net;
35using Nini.Config;
36using OpenSim.Region.Framework.Interfaces;
37using OpenSim.Region.Framework.Scenes;
38
39namespace OpenSim.Region.Modules.Python
40{
41 class PythonModule : IRegionModule
42 {
43 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
44 private PythonEngine m_python;
45
46 public void Initialise(Scene scene, IConfigSource source)
47 {
48 }
49
50 public void PostInitialise()
51 {
52 m_log.Info("[PYTHON] Initialising IronPython engine.");
53 m_python = new PythonEngine();
54 m_python.AddToPath(System.Environment.CurrentDirectory + System.IO.Path.DirectorySeparatorChar + "Python");
55 }
56
57 public void Close()
58 {
59 }
60
61 public string Name
62 {
63 get { return "PythonModule"; }
64 }
65
66 public bool IsSharedModule
67 {
68 get { return true; }
69 }
70 }
71}
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
index 9d97cb2..ee32755 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs
@@ -236,7 +236,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
236 iHttpReq.StopHttpRequest(localID, itemID); 236 iHttpReq.StopHttpRequest(localID, itemID);
237 237
238 IWorldComm comms = engine.World.RequestModuleInterface<IWorldComm>(); 238 IWorldComm comms = engine.World.RequestModuleInterface<IWorldComm>();
239 comms.DeleteListener(itemID); 239 if (comms != null)
240 comms.DeleteListener(itemID);
240 241
241 IXMLRPC xmlrpc = engine.World.RequestModuleInterface<IXMLRPC>(); 242 IXMLRPC xmlrpc = engine.World.RequestModuleInterface<IXMLRPC>();
242 xmlrpc.DeleteChannels(itemID); 243 xmlrpc.DeleteChannels(itemID);
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index b387728..ec771e3 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -749,7 +749,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
749 ChatTypeEnum.Whisper, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false); 749 ChatTypeEnum.Whisper, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false);
750 750
751 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 751 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
752 wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text); 752 if (wComm != null)
753 wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text);
753 } 754 }
754 755
755 public void llSay(int channelID, string text) 756 public void llSay(int channelID, string text)
@@ -769,7 +770,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
769 ChatTypeEnum.Say, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false); 770 ChatTypeEnum.Say, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false);
770 771
771 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 772 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
772 wComm.DeliverMessage(ChatTypeEnum.Say, channelID, m_host.Name, m_host.UUID, text); 773 if (wComm != null)
774 wComm.DeliverMessage(ChatTypeEnum.Say, channelID, m_host.Name, m_host.UUID, text);
773 } 775 }
774 } 776 }
775 777
@@ -784,7 +786,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
784 ChatTypeEnum.Shout, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, true); 786 ChatTypeEnum.Shout, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, true);
785 787
786 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 788 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
787 wComm.DeliverMessage(ChatTypeEnum.Shout, channelID, m_host.Name, m_host.UUID, text); 789 if (wComm != null)
790 wComm.DeliverMessage(ChatTypeEnum.Shout, channelID, m_host.Name, m_host.UUID, text);
788 } 791 }
789 792
790 public void llRegionSay(int channelID, string text) 793 public void llRegionSay(int channelID, string text)
@@ -801,7 +804,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
801 m_host.AddScriptLPS(1); 804 m_host.AddScriptLPS(1);
802 805
803 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 806 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
804 wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text); 807 if (wComm != null)
808 wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text);
805 } 809 }
806 810
807 public LSL_Integer llListen(int channelID, string name, string ID, string msg) 811 public LSL_Integer llListen(int channelID, string name, string ID, string msg)
@@ -810,21 +814,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
810 UUID keyID; 814 UUID keyID;
811 UUID.TryParse(ID, out keyID); 815 UUID.TryParse(ID, out keyID);
812 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 816 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
813 return wComm.Listen(m_localID, m_itemID, m_host.UUID, channelID, name, keyID, msg); 817 if (wComm != null)
818 return wComm.Listen(m_localID, m_itemID, m_host.UUID, channelID, name, keyID, msg);
819 else
820 return -1;
814 } 821 }
815 822
816 public void llListenControl(int number, int active) 823 public void llListenControl(int number, int active)
817 { 824 {
818 m_host.AddScriptLPS(1); 825 m_host.AddScriptLPS(1);
819 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 826 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
820 wComm.ListenControl(m_itemID, number, active); 827 if (wComm != null)
828 wComm.ListenControl(m_itemID, number, active);
821 } 829 }
822 830
823 public void llListenRemove(int number) 831 public void llListenRemove(int number)
824 { 832 {
825 m_host.AddScriptLPS(1); 833 m_host.AddScriptLPS(1);
826 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); 834 IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>();
827 wComm.ListenRemove(m_itemID, number); 835 if (wComm != null)
836 wComm.ListenRemove(m_itemID, number);
828 } 837 }
829 838
830 public void llSensor(string name, string id, int type, double range, double arc) 839 public void llSensor(string name, string id, int type, double range, double arc)
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
index 0716d45..eeb59d9 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs
@@ -166,7 +166,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
166 ts.next = DateTime.Now.Ticks + (long)data[idx+1]; 166 ts.next = DateTime.Now.Ticks + (long)data[idx+1];
167 idx += 2; 167 idx += 2;
168 168
169 Timers.Add(MakeTimerKey(localID,itemID), ts); 169 lock (TimerListLock)
170 {
171 Timers.Add(MakeTimerKey(localID, itemID), ts);
172 }
170 } 173 }
171 } 174 }
172 } 175 }
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 2fc2ea1..d997ea3 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -1394,7 +1394,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1394 if (rootE.GetAttribute("UUID") != itemID.ToString()) 1394 if (rootE.GetAttribute("UUID") != itemID.ToString())
1395 return; 1395 return;
1396 1396
1397 string assetID = rootE.GetAttribute("Asset"); 1397// string assetID = rootE.GetAttribute("Asset");
1398 1398
1399 XmlNodeList stateL = rootE.GetElementsByTagName("ScriptState"); 1399 XmlNodeList stateL = rootE.GetElementsByTagName("ScriptState");
1400 1400