aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r--OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs8
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs18
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs17
-rw-r--r--OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs16
-rw-r--r--OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs13
-rw-r--r--OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs4
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs33
-rw-r--r--OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs1
-rw-r--r--OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs8
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs17
10 files changed, 86 insertions, 49 deletions
diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
index 127ca1d..7054825 100644
--- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
+++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs
@@ -83,7 +83,7 @@ namespace Flotsam.RegionModules.AssetCache
83 private Dictionary<string, ManualResetEvent> m_CurrentlyWriting = new Dictionary<string, ManualResetEvent>(); 83 private Dictionary<string, ManualResetEvent> m_CurrentlyWriting = new Dictionary<string, ManualResetEvent>();
84 private int m_WaitOnInprogressTimeout = 3000; 84 private int m_WaitOnInprogressTimeout = 3000;
85#else 85#else
86 private List<string> m_CurrentlyWriting = new List<string>(); 86 private HashSet<string> m_CurrentlyWriting = new HashSet<string>();
87#endif 87#endif
88 88
89 private bool m_FileCacheEnabled = true; 89 private bool m_FileCacheEnabled = true;
@@ -272,7 +272,11 @@ namespace Flotsam.RegionModules.AssetCache
272 // the other thread has updated the time for us. 272 // the other thread has updated the time for us.
273 try 273 try
274 { 274 {
275 File.SetLastAccessTime(filename, DateTime.Now); 275 lock (m_CurrentlyWriting)
276 {
277 if (!m_CurrentlyWriting.Contains(filename))
278 File.SetLastAccessTime(filename, DateTime.Now);
279 }
276 } 280 }
277 catch 281 catch
278 { 282 {
diff --git a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
index 69aa0ed..2bfe190 100644
--- a/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Attachments/AttachmentsModule.cs
@@ -578,9 +578,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
578 private void AttachToAgent( 578 private void AttachToAgent(
579 IScenePresence sp, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent) 579 IScenePresence sp, SceneObjectGroup so, uint attachmentpoint, Vector3 attachOffset, bool silent)
580 { 580 {
581 // m_log.DebugFormat( 581// m_log.DebugFormat(
582 // "[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}", 582// "[ATTACHMENTS MODULE]: Adding attachment {0} to avatar {1} in pt {2} pos {3} {4}",
583 // so.Name, avatar.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos); 583// so.Name, sp.Name, attachmentpoint, attachOffset, so.RootPart.AttachedPos);
584 584
585 so.DetachFromBackup(); 585 so.DetachFromBackup();
586 586
@@ -845,9 +845,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
845 /// <param name="att"></param> 845 /// <param name="att"></param>
846 private void ShowAttachInUserInventory(IScenePresence sp, uint AttachmentPt, UUID itemID, SceneObjectGroup att) 846 private void ShowAttachInUserInventory(IScenePresence sp, uint AttachmentPt, UUID itemID, SceneObjectGroup att)
847 { 847 {
848 // m_log.DebugFormat( 848// m_log.DebugFormat(
849 // "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}", 849// "[USER INVENTORY]: Updating attachment {0} for {1} at {2} using item ID {3}",
850 // att.Name, sp.Name, AttachmentPt, itemID); 850// att.Name, sp.Name, AttachmentPt, itemID);
851 851
852 if (UUID.Zero == itemID) 852 if (UUID.Zero == itemID)
853 { 853 {
@@ -910,9 +910,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
910 910
911 private void Client_OnObjectAttach(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent) 911 private void Client_OnObjectAttach(IClientAPI remoteClient, uint objectLocalID, uint AttachmentPt, bool silent)
912 { 912 {
913 // m_log.DebugFormat( 913// m_log.DebugFormat(
914 // "[ATTACHMENTS MODULE]: Attaching object local id {0} to {1} point {2} from ground (silent = {3})", 914// "[ATTACHMENTS MODULE]: Attaching object local id {0} to {1} point {2} from ground (silent = {3})",
915 // objectLocalID, remoteClient.Name, AttachmentPt, silent); 915// objectLocalID, remoteClient.Name, AttachmentPt, silent);
916 916
917 if (!Enabled) 917 if (!Enabled)
918 return; 918 return;
diff --git a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs
index 0babeb5..3a91465 100644
--- a/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Combat/CombatModule.cs
@@ -96,6 +96,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
96 ScenePresence killingAvatar = null; 96 ScenePresence killingAvatar = null;
97// string killingAvatarMessage; 97// string killingAvatarMessage;
98 98
99 // check to see if it is an NPC and just remove it
100 INPCModule NPCmodule = deadAvatar.Scene.RequestModuleInterface<INPCModule>();
101 if (NPCmodule != null && NPCmodule.DeleteNPC(deadAvatar.UUID, deadAvatar.Scene))
102 {
103 return;
104 }
105
99 if (killerObjectLocalID == 0) 106 if (killerObjectLocalID == 0)
100 deadAvatarMessage = "You committed suicide!"; 107 deadAvatarMessage = "You committed suicide!";
101 else 108 else
@@ -145,7 +152,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
145 catch (InvalidOperationException) 152 catch (InvalidOperationException)
146 { } 153 { }
147 154
148 deadAvatar.Health = 100; 155 deadAvatar.setHealthWithUpdate(100.0f);
149 deadAvatar.Scene.TeleportClientHome(deadAvatar.UUID, deadAvatar.ControllingClient); 156 deadAvatar.Scene.TeleportClientHome(deadAvatar.UUID, deadAvatar.ControllingClient);
150 } 157 }
151 158
@@ -154,14 +161,18 @@ namespace OpenSim.Region.CoreModules.Avatar.Combat.CombatModule
154 try 161 try
155 { 162 {
156 ILandObject obj = avatar.Scene.LandChannel.GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y); 163 ILandObject obj = avatar.Scene.LandChannel.GetLandObject(avatar.AbsolutePosition.X, avatar.AbsolutePosition.Y);
157 164 if ((obj.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0
158 if ((obj.LandData.Flags & (uint)ParcelFlags.AllowDamage) != 0) 165 || avatar.Scene.RegionInfo.RegionSettings.AllowDamage)
159 { 166 {
160 avatar.Invulnerable = false; 167 avatar.Invulnerable = false;
161 } 168 }
162 else 169 else
163 { 170 {
164 avatar.Invulnerable = true; 171 avatar.Invulnerable = true;
172 if (avatar.Health < 100.0f)
173 {
174 avatar.setHealthWithUpdate(100.0f);
175 }
165 } 176 }
166 } 177 }
167 catch (Exception) 178 catch (Exception)
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
index a31e0aa..d4fbdce 100644
--- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs
@@ -30,7 +30,6 @@ using System.Collections.Generic;
30using System.Net; 30using System.Net;
31using System.Reflection; 31using System.Reflection;
32using System.Threading; 32using System.Threading;
33
34using OpenSim.Framework; 33using OpenSim.Framework;
35using OpenSim.Framework.Capabilities; 34using OpenSim.Framework.Capabilities;
36using OpenSim.Framework.Client; 35using OpenSim.Framework.Client;
@@ -596,7 +595,13 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
596 595
597 if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg)) 596 if (NeedsClosing(sp.DrawDistance, oldRegionX, newRegionX, oldRegionY, newRegionY, reg))
598 { 597 {
599// Thread.Sleep(5000); 598 // We need to delay here because Imprudence viewers, unlike v1 or v3, have a short (<200ms, <500ms) delay before
599 // they regard the new region as the current region after receiving the AgentMovementComplete
600 // response. If close is sent before then, it will cause the viewer to quit instead.
601 // However, if this delay is longer, then a viewer can teleport back to this region and experience
602 // a failure because the old ScenePresence has not yet been cleaned up.
603 Thread.Sleep(2000);
604
600 sp.Close(); 605 sp.Close();
601 sp.Scene.IncomingCloseAgent(sp.UUID); 606 sp.Scene.IncomingCloseAgent(sp.UUID);
602 } 607 }
@@ -1913,12 +1918,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
1913 Thread.Sleep(100); 1918 Thread.Sleep(100);
1914 } 1919 }
1915 1920
1916 if (count > 0) 1921 return count > 0;
1917 return true;
1918 else
1919 return false;
1920
1921 return true;
1922 } 1922 }
1923 1923
1924 protected void SetInTransit(UUID id) 1924 protected void SetInTransit(UUID id)
diff --git a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
index f4cf6b4..199dd11 100644
--- a/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
+++ b/OpenSim/Region/CoreModules/Scripting/LSLHttp/UrlModule.cs
@@ -147,6 +147,7 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
147 public void Close() 147 public void Close()
148 { 148 {
149 } 149 }
150
150 public UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID) 151 public UUID RequestURL(IScriptModule engine, SceneObjectPart host, UUID itemID)
151 { 152 {
152 UUID urlcode = UUID.Random(); 153 UUID urlcode = UUID.Random();
@@ -176,6 +177,10 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
176 uri, 177 uri,
177 new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode)); 178 new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));
178 179
180 m_log.DebugFormat(
181 "[URL MODULE]: Set up incoming request url {0} for {1} in {2} {3}",
182 uri, itemID, host.Name, host.LocalId);
183
179 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url }); 184 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
180 } 185 }
181 186
@@ -218,6 +223,10 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
218 uri, 223 uri,
219 new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode)); 224 new PollServiceEventArgs(HttpRequestHandler, HasEvents, GetEvents, NoEvents, urlcode));
220 225
226 m_log.DebugFormat(
227 "[URL MODULE]: Set up incoming secure request url {0} for {1} in {2} {3}",
228 uri, itemID, host.Name, host.LocalId);
229
221 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url }); 230 engine.PostScriptEvent(itemID, "http_request", new Object[] { urlcode.ToString(), "URL_REQUEST_GRANTED", url });
222 } 231 }
223 232
@@ -241,6 +250,10 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
241 m_RequestMap.Remove(req); 250 m_RequestMap.Remove(req);
242 } 251 }
243 252
253// m_log.DebugFormat(
254// "[URL MODULE]: Releasing url {0} for {1} in {2}",
255// url, data.itemID, data.hostID);
256
244 RemoveUrl(data); 257 RemoveUrl(data);
245 m_UrlMap.Remove(url); 258 m_UrlMap.Remove(url);
246 } 259 }
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs
index f0d21e6..4470799 100644
--- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs
+++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs
@@ -55,7 +55,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
55 MethodBase.GetCurrentMethod().DeclaringType); 55 MethodBase.GetCurrentMethod().DeclaringType);
56 56
57 private IUserManagement m_UserManagement; 57 private IUserManagement m_UserManagement;
58 private IGridService m_GridService; 58// private IGridService m_GridService;
59 59
60 private Scene m_Scene; 60 private Scene m_Scene;
61 AccessFlags m_accessValue = AccessFlags.None; 61 AccessFlags m_accessValue = AccessFlags.None;
@@ -65,7 +65,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization
65 { 65 {
66 m_Scene = scene; 66 m_Scene = scene;
67 m_UserManagement = scene.RequestModuleInterface<IUserManagement>(); 67 m_UserManagement = scene.RequestModuleInterface<IUserManagement>();
68 m_GridService = scene.GridService; 68// m_GridService = scene.GridService;
69 69
70 if (config != null) 70 if (config != null)
71 { 71 {
diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
index 06d5587..2fa0b3f 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs
@@ -1392,21 +1392,26 @@ namespace OpenSim.Region.CoreModules.World.Land
1392 private void EventManagerOnRegisterCaps(UUID agentID, Caps caps) 1392 private void EventManagerOnRegisterCaps(UUID agentID, Caps caps)
1393 { 1393 {
1394 string capsBase = "/CAPS/" + caps.CapsObjectPath; 1394 string capsBase = "/CAPS/" + caps.CapsObjectPath;
1395 caps.RegisterHandler("RemoteParcelRequest", 1395 caps.RegisterHandler(
1396 new RestStreamHandler("POST", capsBase + remoteParcelRequestPath, 1396 "RemoteParcelRequest",
1397 delegate(string request, string path, string param, 1397 new RestStreamHandler(
1398 IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) 1398 "POST",
1399 { 1399 capsBase + remoteParcelRequestPath,
1400 return RemoteParcelRequest(request, path, param, agentID, caps); 1400 (request, path, param, httpRequest, httpResponse)
1401 })); 1401 => RemoteParcelRequest(request, path, param, agentID, caps),
1402 "RemoteParcelRequest",
1403 agentID.ToString()));
1404
1402 UUID parcelCapID = UUID.Random(); 1405 UUID parcelCapID = UUID.Random();
1403 caps.RegisterHandler("ParcelPropertiesUpdate", 1406 caps.RegisterHandler(
1404 new RestStreamHandler("POST", "/CAPS/" + parcelCapID, 1407 "ParcelPropertiesUpdate",
1405 delegate(string request, string path, string param, 1408 new RestStreamHandler(
1406 IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) 1409 "POST",
1407 { 1410 "/CAPS/" + parcelCapID,
1408 return ProcessPropertiesUpdate(request, path, param, agentID, caps); 1411 (request, path, param, httpRequest, httpResponse)
1409 })); 1412 => ProcessPropertiesUpdate(request, path, param, agentID, caps),
1413 "ParcelPropertiesUpdate",
1414 agentID.ToString()));
1410 } 1415 }
1411 private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps) 1416 private string ProcessPropertiesUpdate(string request, string path, string param, UUID agentID, Caps caps)
1412 { 1417 {
diff --git a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
index 5122734..102b4d7 100644
--- a/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
+++ b/OpenSim/Region/CoreModules/World/Land/PrimCountModule.cs
@@ -126,7 +126,6 @@ namespace OpenSim.Region.CoreModules.World.Land
126// m_log.DebugFormat( 126// m_log.DebugFormat(
127// "[PRIM COUNT MODULE]: Ignoring OnParcelPrimCountAdd() for {0} on {1} since count is tainted", 127// "[PRIM COUNT MODULE]: Ignoring OnParcelPrimCountAdd() for {0} on {1} since count is tainted",
128// obj.Name, m_Scene.RegionInfo.RegionName); 128// obj.Name, m_Scene.RegionInfo.RegionName);
129
130 } 129 }
131 } 130 }
132 131
diff --git a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs
index 5239f50..601e81e 100644
--- a/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs
+++ b/OpenSim/Region/CoreModules/World/Media/Moap/MoapModule.cs
@@ -145,7 +145,9 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap
145 145
146 // Even though we're registering for POST we're going to get GETS and UPDATES too 146 // Even though we're registering for POST we're going to get GETS and UPDATES too
147 caps.RegisterHandler( 147 caps.RegisterHandler(
148 "ObjectMedia", new RestStreamHandler("POST", omCapUrl, HandleObjectMediaMessage)); 148 "ObjectMedia",
149 new RestStreamHandler(
150 "POST", omCapUrl, HandleObjectMediaMessage, "ObjectMedia", agentID.ToString()));
149 } 151 }
150 152
151 string omuCapUrl = "/CAPS/" + UUID.Random(); 153 string omuCapUrl = "/CAPS/" + UUID.Random();
@@ -157,7 +159,9 @@ namespace OpenSim.Region.CoreModules.World.Media.Moap
157 159
158 // Even though we're registering for POST we're going to get GETS and UPDATES too 160 // Even though we're registering for POST we're going to get GETS and UPDATES too
159 caps.RegisterHandler( 161 caps.RegisterHandler(
160 "ObjectMediaNavigate", new RestStreamHandler("POST", omuCapUrl, HandleObjectMediaNavigateMessage)); 162 "ObjectMediaNavigate",
163 new RestStreamHandler(
164 "POST", omuCapUrl, HandleObjectMediaNavigateMessage, "ObjectMediaNavigate", agentID.ToString()));
161 } 165 }
162 } 166 }
163 167
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 899e5ea..be6b240 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -190,14 +190,15 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
190 { 190 {
191 //m_log.DebugFormat("[WORLD MAP]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps); 191 //m_log.DebugFormat("[WORLD MAP]: OnRegisterCaps: agentID {0} caps {1}", agentID, caps);
192 string capsBase = "/CAPS/" + caps.CapsObjectPath; 192 string capsBase = "/CAPS/" + caps.CapsObjectPath;
193 caps.RegisterHandler("MapLayer", 193 caps.RegisterHandler(
194 new RestStreamHandler("POST", capsBase + m_mapLayerPath, 194 "MapLayer",
195 delegate(string request, string path, string param, 195 new RestStreamHandler(
196 IOSHttpRequest httpRequest, IOSHttpResponse httpResponse) 196 "POST",
197 { 197 capsBase + m_mapLayerPath,
198 return MapLayerRequest(request, path, param, 198 (request, path, param, httpRequest, httpResponse)
199 agentID, caps); 199 => MapLayerRequest(request, path, param, agentID, caps),
200 })); 200 "MapLayer",
201 agentID.ToString()));
201 } 202 }
202 203
203 /// <summary> 204 /// <summary>