diff options
author | Melanie | 2009-11-28 09:26:00 +0000 |
---|---|---|
committer | Melanie | 2009-11-28 09:26:00 +0000 |
commit | d3e7a5293310651ea8adf28327e1cb9840bcf9d7 (patch) | |
tree | 044fde70d244eecd8c1344eb973aa8d6e86e249b /OpenSim/Region | |
parent | Reset update flag when a SOG is deleted. This fixes llDie(); (diff) | |
parent | Add some conditionals to references to the WorldComm module, so that the (diff) | |
download | opensim-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')
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 | |||
28 | using System; | ||
29 | using System.Reflection; | ||
30 | using log4net; | ||
31 | |||
32 | namespace 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 | |||
28 | using System; | ||
29 | using System.Collections.Generic; | ||
30 | using System.Reflection; | ||
31 | using System.Security.Policy; | ||
32 | using System.Text; | ||
33 | using IronPython.Hosting; | ||
34 | using log4net; | ||
35 | using Nini.Config; | ||
36 | using OpenSim.Region.Framework.Interfaces; | ||
37 | using OpenSim.Region.Framework.Scenes; | ||
38 | |||
39 | namespace 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 | ||