From 0898be5750a9e5f0cfab566a34b65e4a227d82e6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Mon, 31 Jan 2011 22:54:36 +0000 Subject: [PATCH 01/62] Change SimianGroupsServicesConnectorModule.GetAgentGroupMembership() so that it returns null if the user isn't a member of the group. This matches the behaviour of the same method for Flotsam Groups. This is the behaviour assumed by existing code. Method doc also added to IGroupsServicesConnector to the make the contract clear. --- .../XmlRpcGroups/IGroupsServicesConnector.cs | 19 ++++++ .../SimianGroupsServicesConnectorModule.cs | 66 +++++++++---------- 2 files changed, 52 insertions(+), 33 deletions(-) diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs index 5c779debc5..6d2607541e 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/IGroupsServicesConnector.cs @@ -63,7 +63,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups void SetAgentActiveGroupRole(UUID RequestingAgentID, UUID AgentID, UUID GroupID, UUID RoleID); void SetAgentGroupInfo(UUID RequestingAgentID, UUID AgentID, UUID GroupID, bool AcceptNotices, bool ListInProfile); + /// + /// Get information about a specific group to which the user belongs. + /// + /// The agent requesting the information. + /// The agent requested. + /// The group requested. + /// + /// If the user is a member of the group then the data structure is returned. If not, then null is returned. + /// GroupMembershipData GetAgentGroupMembership(UUID RequestingAgentID, UUID AgentID, UUID GroupID); + + /// + /// Get information about the groups to which a user belongs. + /// + /// The agent requesting the information. + /// The agent requested. + /// + /// Information about the groups to which the user belongs. If the user belongs to no groups then an empty + /// list is returned. + /// List GetAgentGroupMemberships(UUID RequestingAgentID, UUID AgentID); void AddGroupNotice(UUID RequestingAgentID, UUID groupID, UUID noticeID, string fromName, string subject, string message, byte[] binaryBucket); diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs index 0d265f2501..81725c55c7 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/SimianGroupsServicesConnectorModule.cs @@ -704,7 +704,6 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups } } - return findings; } @@ -712,54 +711,55 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups { if (m_debugEnabled) m_log.InfoFormat("[SIMIAN-GROUPS-CONNECTOR] {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); - GroupMembershipData data = new GroupMembershipData(); - - /////////////////////////////// - // Agent Specific Information: - // - OSDMap UserActiveGroup; - if (SimianGetGenericEntry(agentID, "Group", "ActiveGroup", out UserActiveGroup)) - { - data.Active = UserActiveGroup["GroupID"].AsUUID().Equals(groupID); - } + GroupMembershipData data = null; + bool foundData = false; OSDMap UserGroupMemberInfo; if (SimianGetGenericEntry(agentID, "GroupMember", groupID.ToString(), out UserGroupMemberInfo)) { + data = new GroupMembershipData(); data.AcceptNotices = UserGroupMemberInfo["AcceptNotices"].AsBoolean(); data.Contribution = UserGroupMemberInfo["Contribution"].AsInteger(); data.ListInProfile = UserGroupMemberInfo["ListInProfile"].AsBoolean(); - data.ActiveRole = UserGroupMemberInfo["SelectedRoleID"].AsUUID(); + data.ActiveRole = UserGroupMemberInfo["SelectedRoleID"].AsUUID(); + + /////////////////////////////// + // Agent Specific Information: + // + OSDMap UserActiveGroup; + if (SimianGetGenericEntry(agentID, "Group", "ActiveGroup", out UserActiveGroup)) + { + data.Active = UserActiveGroup["GroupID"].AsUUID().Equals(groupID); + } /////////////////////////////// // Role Specific Information: // - OSDMap GroupRoleInfo; if (SimianGetGenericEntry(groupID, "GroupRole", data.ActiveRole.ToString(), out GroupRoleInfo)) { data.GroupTitle = GroupRoleInfo["Title"].AsString(); data.GroupPowers = GroupRoleInfo["Powers"].AsULong(); - } - } - - /////////////////////////////// - // Group Specific Information: - // - OSDMap GroupInfo; - string GroupName; - if (SimianGetFirstGenericEntry(groupID, "Group", out GroupName, out GroupInfo)) - { - data.GroupID = groupID; - data.AllowPublish = GroupInfo["AllowPublish"].AsBoolean(); - data.Charter = GroupInfo["Charter"].AsString(); - data.FounderID = GroupInfo["FounderID"].AsUUID(); - data.GroupName = GroupName; - data.GroupPicture = GroupInfo["InsigniaID"].AsUUID(); - data.MaturePublish = GroupInfo["MaturePublish"].AsBoolean(); - data.MembershipFee = GroupInfo["MembershipFee"].AsInteger(); - data.OpenEnrollment = GroupInfo["OpenEnrollment"].AsBoolean(); - data.ShowInList = GroupInfo["ShowInList"].AsBoolean(); + } + + /////////////////////////////// + // Group Specific Information: + // + OSDMap GroupInfo; + string GroupName; + if (SimianGetFirstGenericEntry(groupID, "Group", out GroupName, out GroupInfo)) + { + data.GroupID = groupID; + data.AllowPublish = GroupInfo["AllowPublish"].AsBoolean(); + data.Charter = GroupInfo["Charter"].AsString(); + data.FounderID = GroupInfo["FounderID"].AsUUID(); + data.GroupName = GroupName; + data.GroupPicture = GroupInfo["InsigniaID"].AsUUID(); + data.MaturePublish = GroupInfo["MaturePublish"].AsBoolean(); + data.MembershipFee = GroupInfo["MembershipFee"].AsInteger(); + data.OpenEnrollment = GroupInfo["OpenEnrollment"].AsBoolean(); + data.ShowInList = GroupInfo["ShowInList"].AsBoolean(); + } } return data; From 2344150b6e9dd056769f8ce565ec35243bef2538 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 2 Feb 2011 19:39:33 +0000 Subject: [PATCH 02/62] Stop double counting dequeued packets for packets sent number This is already being incremented in LLUDPServer.SendPacketFinal for every packet --- OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index d4c33075eb..21bd99efe9 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -441,13 +441,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP /// an outgoing packet from each, obeying the throttling bucket limits /// /// + /// /// Packet queues are inspected in ascending numerical order starting from 0. Therefore, queues with a lower /// ThrottleOutPacketType number will see their packet get sent first (e.g. if both Land and Wind queues have /// packets, then the packet at the front of the Land queue will be sent before the packet at the front of the /// wind queue). /// - /// This function is only called from a synchronous loop in the - /// UDPServer so we don't need to bother making this thread safe + /// This function is only called from a synchronous loop in the + /// UDPServer so we don't need to bother making this thread safe + /// + /// /// True if any packets were sent, otherwise false public bool DequeueOutgoing() { @@ -476,7 +479,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; - this.PacketsSent++; } } else @@ -493,7 +495,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - this.PacketsSent++; } else { From 2413e9eb3fe63307660202f913eee1c877340372 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 2 Feb 2011 20:00:50 +0000 Subject: [PATCH 03/62] Record number of resent packets in LindenUDP stack and display in stats report --- .../ClientStack/LindenUDP/LLUDPClient.cs | 7 ++++-- .../ClientStack/LindenUDP/LLUDPServer.cs | 5 +++- .../Agent/UDP/Linden/LindenUDPInfoModule.cs | 24 ++++++++++--------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 21bd99efe9..65a8fe3ca8 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -122,6 +122,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP public int PacketsReceived; /// Number of packets sent to this client public int PacketsSent; + /// Number of packets resent to this client + public int PacketsResent; /// Total byte count of unacked packets sent to this client public int UnackedBytes; @@ -256,9 +258,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP public string GetStats() { return string.Format( - "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}", + "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}", + PacketsReceived, PacketsSent, - PacketsReceived, + PacketsResent, UnackedBytes, m_packetOutboxes[(int)ThrottleOutPacketType.Resend].Count, m_packetOutboxes[(int)ThrottleOutPacketType.Land].Count, diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index df8ddbbd8b..5ff9aeee8b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -506,7 +506,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Bump up the resend count on this packet Interlocked.Increment(ref outgoingPacket.ResendCount); - //Interlocked.Increment(ref Stats.ResentPackets); // Requeue or resend the packet if (!outgoingPacket.Client.EnqueueOutgoing(outgoingPacket, false)) @@ -582,6 +581,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP udpClient.NeedAcks.Add(outgoingPacket); } } + else + { + Interlocked.Increment(ref udpClient.PacketsResent); + } #endregion Sequence Number Assignment diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 87d067c961..6630edb15e 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -154,24 +154,26 @@ namespace OpenSim.Region.CoreModules.UDP.Linden report.Append(GetColumnEntry("Type", maxTypeLength, columnPadding)); report.AppendFormat( - "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", + "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}\n", "Pkts", "Pkts", + "Pkts", "Bytes", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts", - "Pkts"); + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts", + "Q Pkts"); report.AppendFormat("{0,-" + totalInfoFieldsLength + "}", ""); report.AppendFormat( - "{0,7} {1,7} {2,9} {3,8} {4,7} {5,7} {6,7} {7,7} {8,9} {9,7} {10,7}\n", - "Out", + "{0,7} {1,7} {2,7} {3,9} {4,7} {5,7} {6,7} {7,7} {8,7} {9,8} {10,7} {11,7}\n", "In", + "Out", + "Resent", "Unacked", "Resend", "Land", From 4f7cf491e6fa06a6ac4672fa81e707437f3fa537 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Wed, 2 Feb 2011 20:02:10 +0000 Subject: [PATCH 04/62] Comment out texture CAPS 'texture not found' message for now --- OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs index 6fb8b4625c..df4d561024 100644 --- a/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Assets/GetTextureModule.cs @@ -245,14 +245,12 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps WriteTextureData(httpRequest, httpResponse, texture, format); return true; } - } // not found - m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found"); +// m_log.Warn("[GETTEXTURE]: Texture " + textureID + " not found"); httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound; return true; - } private void WriteTextureData(OSHttpRequest request, OSHttpResponse response, AssetBase texture, string format) From 8fdc810a2329063d136458dff5a4c7d307db3feb Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 3 Feb 2011 04:07:36 -0800 Subject: [PATCH 05/62] Addresses mantis #5360: CreatorData was being written as long as it wasn't null. This made iars backwards incompatible when some items had non-null foreign creators. This patch adds an explicit option (-c) to preserve foreign creator information. --- .../Serialization/External/UserInventoryItemSerializer.cs | 2 +- .../Avatar/Inventory/Archiver/InventoryArchiverModule.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs index d5e84c779e..f138437ad5 100644 --- a/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs +++ b/OpenSim/Framework/Serialization/External/UserInventoryItemSerializer.cs @@ -303,7 +303,7 @@ namespace OpenSim.Framework.Serialization.External writer.WriteStartElement("GroupOwned"); writer.WriteString(inventoryItem.GroupOwned.ToString()); writer.WriteEndElement(); - if (inventoryItem.CreatorData != null && inventoryItem.CreatorData != string.Empty) + if (options.ContainsKey("creators") && inventoryItem.CreatorData != null && inventoryItem.CreatorData != string.Empty) writer.WriteElementString("CreatorData", inventoryItem.CreatorData); else if (options.ContainsKey("profile")) { diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs index 1a96098f18..26edba4b6c 100644 --- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiverModule.cs @@ -128,6 +128,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver + " is the user's last name." + Environment.NewLine + " is the path inside the user's inventory for the folder/item to be saved." + Environment.NewLine + "-p|--profile= adds the url of the profile service to the saved user information." + Environment.NewLine + + "-c|--creators preserves information about foreign creators." + Environment.NewLine + "-v|--verbose extra debug messages." + Environment.NewLine + " is the filesystem path at which to save the IAR." + string.Format(" If this is not given then the filename {0} in the current directory is used", DEFAULT_INV_BACKUP_FILENAME), @@ -396,6 +397,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver //ops.Add("v|version=", delegate(string v) { options["version"] = v; }); ops.Add("p|profile=", delegate(string v) { options["profile"] = v; }); ops.Add("v|verbose", delegate(string v) { options["verbose"] = v; }); + ops.Add("c|creators", delegate(string v) { options["creators"] = v; }); List mainParams = ops.Parse(cmdparams); From cf24069227f9a32272c873d4423e2e11f5da25a8 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Thu, 3 Feb 2011 12:43:46 -0800 Subject: [PATCH 06/62] Change UpdateAgent (for changes in agent position) to be sent once to each simulator rather than once to each region. This should help with some of the delays caused by multiple outstanding requests to a single service point. --- .../Simulation/LocalSimulationConnector.cs | 14 ++--- .../Scenes/SceneCommunicationService.cs | 43 ++++++++------- .../Simulation/SimulationServiceConnector.cs | 55 ++++++++++++++++++- 3 files changed, 81 insertions(+), 31 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index c5972ddf1e..56720b7b7a 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs @@ -225,17 +225,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation if (destination == null) return false; + // We limit the number of messages sent for a position change to just one per + // simulator so when we receive the update we need to hand it to each of the + // scenes; scenes each check to see if the is a scene presence for the avatar + // note that we really don't need the GridRegion for this call foreach (Scene s in m_sceneList) { - if (s.RegionInfo.RegionHandle == destination.RegionHandle) - { - //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); - s.IncomingChildAgentDataUpdate(cAgentData); - return true; - } + //m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate"); + s.IncomingChildAgentDataUpdate(cAgentData); } //m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate"); - return false; + return true; } public bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent) diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index f8ff308893..837e65523e 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -193,7 +193,8 @@ namespace OpenSim.Region.Framework.Scenes } } - public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, UUID scopeID, ulong regionHandle); + public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, UUID scopeID, GridRegion dest); + /// /// This informs all neighboring regions about the settings of it's child agent. @@ -202,31 +203,17 @@ namespace OpenSim.Region.Framework.Scenes /// This contains information, such as, Draw Distance, Camera location, Current Position, Current throttle settings, etc. /// /// - private void SendChildAgentDataUpdateAsync(AgentPosition cAgentData, UUID scopeID, ulong regionHandle) + private void SendChildAgentDataUpdateAsync(AgentPosition cAgentData, UUID scopeID, GridRegion dest) { //m_log.Info("[INTERGRID]: Informing neighbors about my agent in " + m_regionInfo.RegionName); try { - //m_commsProvider.InterRegion.ChildAgentUpdate(regionHandle, cAgentData); - uint x = 0, y = 0; - Utils.LongToUInts(regionHandle, out x, out y); - GridRegion destination = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); - m_scene.SimulationService.UpdateAgent(destination, cAgentData); + m_scene.SimulationService.UpdateAgent(dest, cAgentData); } catch { // Ignore; we did our best } - - //if (regionAccepted) - //{ - // //m_log.Info("[INTERGRID]: Completed sending a neighbor an update about my agent"); - //} - //else - //{ - // //m_log.Info("[INTERGRID]: Failed sending a neighbor an update about my agent"); - //} - } private void SendChildAgentDataUpdateCompleted(IAsyncResult iar) @@ -240,14 +227,28 @@ namespace OpenSim.Region.Framework.Scenes // This assumes that we know what our neighbors are. try { + uint x = 0, y = 0; + List simulatorList = new List(); foreach (ulong regionHandle in presence.KnownChildRegionHandles) { if (regionHandle != m_regionInfo.RegionHandle) { - SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync; - d.BeginInvoke(cAgentData, m_regionInfo.ScopeID, regionHandle, - SendChildAgentDataUpdateCompleted, - d); + // we only want to send one update to each simulator; the simulator will + // hand it off to the regions where a child agent exists, this does assume + // that the region position is cached or performance will degrade + Utils.LongToUInts(regionHandle, out x, out y); + GridRegion dest = m_scene.GridService.GetRegionByPosition(UUID.Zero, (int)x, (int)y); + if (! simulatorList.Contains(dest.ServerURI)) + { + // we havent seen this simulator before, add it to the list + // and send it an update + simulatorList.Add(dest.ServerURI); + + SendChildAgentDataUpdateDelegate d = SendChildAgentDataUpdateAsync; + d.BeginInvoke(cAgentData, m_regionInfo.ScopeID, dest, + SendChildAgentDataUpdateCompleted, + d); + } } } } diff --git a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs index c5313fc8b9..cc6bffb7bb 100644 --- a/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs +++ b/OpenSim/Services/Connectors/Simulation/SimulationServiceConnector.cs @@ -48,6 +48,9 @@ namespace OpenSim.Services.Connectors.Simulation { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + // we use this dictionary to track the pending updateagent requests, maps URI --> position update + private Dictionary m_updateAgentQueue = new Dictionary(); + //private GridRegion m_Region; public SimulationServiceConnector() @@ -133,10 +136,56 @@ namespace OpenSim.Services.Connectors.Simulation /// public bool UpdateAgent(GridRegion destination, AgentPosition data) { - // we need a better throttle for these - // return false; + // The basic idea of this code is that the first thread that needs to + // send an update for a specific avatar becomes the worker for any subsequent + // requests until there are no more outstanding requests. Further, only send the most + // recent update; this *should* never be needed but some requests get + // slowed down and once that happens the problem with service end point + // limits kicks in and nothing proceeds + string uri = destination.ServerURI + AgentPath() + data.AgentID + "/"; + lock (m_updateAgentQueue) + { + if (m_updateAgentQueue.ContainsKey(uri)) + { + // Another thread is already handling + // updates for this simulator, just update + // the position and return, overwrites are + // not a problem since we only care about the + // last update anyway + m_updateAgentQueue[uri] = data; + return true; + } + + // Otherwise update the reference and start processing + m_updateAgentQueue[uri] = data; + } - return UpdateAgent(destination, (IAgentData)data); + AgentPosition pos = null; + while (true) + { + lock (m_updateAgentQueue) + { + // save the position + AgentPosition lastpos = pos; + + pos = m_updateAgentQueue[uri]; + + // this is true if no one put a new + // update in the map since the last + // one we processed, if thats the + // case then we are done + if (pos == lastpos) + { + m_updateAgentQueue.Remove(uri); + return true; + } + } + + UpdateAgent(destination,(IAgentData)pos); + } + + // unreachable + return true; } /// From c1665cfe9c02f9f8dcf5ff97afe1cf8bba4fa39a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Thu, 3 Feb 2011 22:34:10 +0000 Subject: [PATCH 07/62] Make UUID 3a367d1c-bef1-6d43-7595-e88c1e3aadb3 reference a full alpha texture. SL's viewer and some downstream projects assume that this UUID points to a full alpha texture, as per http://opensimulator.org/mantis/bug_view_advanced_page.php?bug_id=4751 and http://forums.kokuaviewer.org/viewtopic.php?f=8&t=1323 If the request isn't satified, some viewers will continuously make the request. --- bin/assets/TexturesAssetSet/TexturesAssetSet.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml index 5484ee237f..3af9c994d1 100644 --- a/bin/assets/TexturesAssetSet/TexturesAssetSet.xml +++ b/bin/assets/TexturesAssetSet/TexturesAssetSet.xml @@ -413,6 +413,15 @@ + + + +
+ + + + +
From ba8826d2b8362890fd97d9878b2b9cb7b5488669 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 17:11:35 +0000 Subject: [PATCH 08/62] Fix "set log level" to once again display current log level if it's not given a parameter This addresses http://opensimulator.org/mantis/view.php?id=5345 --- .../Framework/Servers/BaseOpenSimServer.cs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/OpenSim/Framework/Servers/BaseOpenSimServer.cs b/OpenSim/Framework/Servers/BaseOpenSimServer.cs index b28ad69a5e..21e1e09b70 100644 --- a/OpenSim/Framework/Servers/BaseOpenSimServer.cs +++ b/OpenSim/Framework/Servers/BaseOpenSimServer.cs @@ -319,18 +319,21 @@ namespace OpenSim.Framework.Servers return; } - string rawLevel = cmd[3]; - - ILoggerRepository repository = LogManager.GetRepository(); - Level consoleLevel = repository.LevelMap[rawLevel]; - - if (consoleLevel != null) - m_consoleAppender.Threshold = consoleLevel; - else - Notice( - String.Format( - "{0} is not a valid logging level. Valid logging levels are ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF", - rawLevel)); + if (cmd.Length > 3) + { + string rawLevel = cmd[3]; + + ILoggerRepository repository = LogManager.GetRepository(); + Level consoleLevel = repository.LevelMap[rawLevel]; + + if (consoleLevel != null) + m_consoleAppender.Threshold = consoleLevel; + else + Notice( + String.Format( + "{0} is not a valid logging level. Valid logging levels are ALL, DEBUG, INFO, WARN, ERROR, FATAL, OFF", + rawLevel)); + } Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold)); } From 1613d89383574f7bba3102376e6f3a2ee99b1270 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 20:51:51 +0000 Subject: [PATCH 09/62] minor: Correct misspelling of neighbour in log messages. Thanks Fly-Man- --- .../Framework/EntityTransfer/EntityTransferModule.cs | 2 +- OpenSim/Services/GridService/GridService.cs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 54b95f7de0..80a804137f 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -983,7 +983,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer ///
public void EnableChildAgent(ScenePresence sp, GridRegion region) { - m_log.DebugFormat("[ENTITY TRANSFER]: Enabling child agent in new neighour {0}", region.RegionName); + m_log.DebugFormat("[ENTITY TRANSFER]: Enabling child agent in new neighbour {0}", region.RegionName); AgentCircuitData currentAgentCircuit = sp.Scene.AuthenticateHandler.GetAgentCircuitData(sp.ControllingClient.CircuitCode); AgentCircuitData agent = sp.ControllingClient.RequestClientInfo(); diff --git a/OpenSim/Services/GridService/GridService.cs b/OpenSim/Services/GridService/GridService.cs index 125c2be8cf..aeff9b524f 100644 --- a/OpenSim/Services/GridService/GridService.cs +++ b/OpenSim/Services/GridService/GridService.cs @@ -286,7 +286,7 @@ namespace OpenSim.Services.GridService } } - m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighours", region.RegionName, rinfos.Count); + m_log.DebugFormat("[GRID SERVICE]: region {0} has {1} neighbours", region.RegionName, rinfos.Count); return rinfos; } From 034327b51fc496702b84b101123140b017bf68ff Mon Sep 17 00:00:00 2001 From: Kevin Cozens Date: Thu, 3 Feb 2011 12:03:17 -0500 Subject: [PATCH 10/62] Send object date to viewer in microseconds (Fixes mantis bug #3990) --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4fcd8f5c9d..6a92378ea7 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2055,8 +2055,9 @@ namespace OpenSim.Region.Framework.Scenes public void GetProperties(IClientAPI client) { + //Viewer wants date in microseconds so multiply it by 1,000,000. client.SendObjectPropertiesReply( - m_fromUserInventoryItemID, (ulong)_creationDate, _creatorID, UUID.Zero, UUID.Zero, + m_fromUserInventoryItemID, (ulong)_creationDate*(ulong)1e6, _creatorID, UUID.Zero, UUID.Zero, _groupID, (short)InventorySerial, _lastOwnerID, UUID, _ownerID, ParentGroup.RootPart.TouchName, new byte[0], ParentGroup.RootPart.SitName, Name, Description, ParentGroup.RootPart._ownerMask, ParentGroup.RootPart._nextOwnerMask, ParentGroup.RootPart._groupMask, ParentGroup.RootPart._everyoneMask, From 144f3678631436a252ccd9a149f41e4f3711b50a Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Feb 2011 12:57:22 -0800 Subject: [PATCH 11/62] Bug fixed on map search for HG. Affected queries that had a region name at the end. --- OpenSim/Services/GridService/HypergridLinker.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 588c1dd0ed..80f2caf52f 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -220,9 +220,15 @@ namespace OpenSim.Services.GridService string[] parts = mapName.Split(new char[] {' '}); string regionName = String.Empty; if (parts.Length > 1) - regionName = parts[1]; + { + regionName = mapName.Substring(parts[0].Length + 1); + regionName = regionName.Trim(new char[] {'"'}); + } if (TryCreateLink(scopeID, xloc, yloc, regionName, 0, null, parts[0], ownerID, out regInfo, out reason)) + { + regInfo.RegionName = mapName; return regInfo; + } } return null; @@ -311,15 +317,15 @@ namespace OpenSim.Services.GridService { RemoveHyperlinkRegion(regInfo.RegionID); reason = "Region is too far (" + x + ", " + y + ")"; - m_log.Info("[HYPERGRID LINKER]: Unable to link, region is too far (" + x + ", " + y + ")"); + m_log.Info("[HYPERGRID LINKER]: Unable to link, reqgion is too far (" + x + ", " + y + ")"); return false; } regInfo.RegionID = regionID; - if ( externalName == string.Empty ) + if (externalName == string.Empty) regInfo.RegionName = regInfo.ServerURI; - else + else regInfo.RegionName = externalName; m_log.Debug("[HYPERGRID LINKER]: naming linked region " + regInfo.RegionName); From 456cdee5ce0aa6508702d6d5051e17162bf772eb Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 21:42:45 +0000 Subject: [PATCH 12/62] minor: correct a log spelling mistake that was pointed out to me --- OpenSim/Services/GridService/HypergridLinker.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/GridService/HypergridLinker.cs b/OpenSim/Services/GridService/HypergridLinker.cs index 80f2caf52f..9d98c8f59c 100644 --- a/OpenSim/Services/GridService/HypergridLinker.cs +++ b/OpenSim/Services/GridService/HypergridLinker.cs @@ -317,7 +317,7 @@ namespace OpenSim.Services.GridService { RemoveHyperlinkRegion(regInfo.RegionID); reason = "Region is too far (" + x + ", " + y + ")"; - m_log.Info("[HYPERGRID LINKER]: Unable to link, reqgion is too far (" + x + ", " + y + ")"); + m_log.Info("[HYPERGRID LINKER]: Unable to link, region is too far (" + x + ", " + y + ")"); return false; } From 3585130ac8b805296323105a5b50c5d416210266 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 31 Jan 2011 02:42:22 -0500 Subject: [PATCH 13/62] SetTexture_fix --- .../Shared/Api/Implementation/LSL_Api.cs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 30fb252cbd..38a16a4928 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -1750,13 +1750,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { UUID textureID=new UUID(); - if (!UUID.TryParse(texture, out textureID)) - { - textureID=InventoryKey(texture, (int)AssetType.Texture); - } - - if (textureID == UUID.Zero) - return; + textureID=InventoryKey(texture, (int)AssetType.Texture); + if (textureID == UUID.Zero) + { + if (!UUID.TryParse(texture, out textureID)) + return; + } Primitive.TextureEntry tex = part.Shape.Textures; From bc2e254b55b65cf267b8027e3e696acbc0f3c60b Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 21:55:22 +0000 Subject: [PATCH 14/62] minor: fix indentation, spacing on commit 3585130 this previous commit tries to look up the texture by name first before just using the uuid. this allows correct resolution of inventory textures which have uuids as names. --- .../Shared/Api/Implementation/LSL_Api.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 38a16a4928..e8da274d22 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -1748,14 +1748,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api protected void SetTexture(SceneObjectPart part, string texture, int face) { - UUID textureID=new UUID(); + UUID textureID = new UUID(); - textureID=InventoryKey(texture, (int)AssetType.Texture); - if (textureID == UUID.Zero) - { - if (!UUID.TryParse(texture, out textureID)) - return; - } + textureID = InventoryKey(texture, (int)AssetType.Texture); + if (textureID == UUID.Zero) + { + if (!UUID.TryParse(texture, out textureID)) + return; + } Primitive.TextureEntry tex = part.Shape.Textures; From 7a6e1fa4cfa01873f9e9420267cae47f58839128 Mon Sep 17 00:00:00 2001 From: Mic Bowman Date: Fri, 4 Feb 2011 14:21:18 -0800 Subject: [PATCH 15/62] Convert SimianMaptile refresh time from ms to seconds. Too many 0's in the config file. --- .../SimianGrid/SimianGridMaptileModule.cs | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs b/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs index dd8fe2b800..93fdae38c1 100644 --- a/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs +++ b/OpenSim/Services/Connectors/SimianGrid/SimianGridMaptileModule.cs @@ -87,16 +87,17 @@ namespace OpenSim.Region.OptionalModules.Simian if (String.IsNullOrEmpty(m_serverUrl)) return; - m_refreshtime = Convert.ToInt32(config.GetString("RefreshTime")); - if (m_refreshtime <= 0) + int refreshseconds = Convert.ToInt32(config.GetString("RefreshTime")); + if (refreshseconds <= 0) return; + m_refreshtime = refreshseconds * 1000; // convert from seconds to ms m_log.InfoFormat("[SIMIAN MAPTILE] enabled with refresh timeout {0} and URL {1}", m_refreshtime,m_serverUrl); - + m_enabled = true; } - + /// /// /// @@ -106,7 +107,7 @@ namespace OpenSim.Region.OptionalModules.Simian { m_refreshTimer.Enabled = true; m_refreshTimer.AutoReset = true; - m_refreshTimer.Interval = 5 * 60 * 1000; // every 5 minutes + m_refreshTimer.Interval = 5 * 60 * 1000; // every 5 minutes m_refreshTimer.Elapsed += new ElapsedEventHandler(HandleMaptileRefresh); } } @@ -120,12 +121,12 @@ namespace OpenSim.Region.OptionalModules.Simian if (! m_enabled) return; - // Every shared region module has to maintain an indepedent list of - // currently running regions + // Every shared region module has to maintain an indepedent list of + // currently running regions lock (m_scenes) m_scenes[scene.RegionInfo.RegionID] = scene; } - + /// /// /// @@ -150,7 +151,7 @@ namespace OpenSim.Region.OptionalModules.Simian // loaded and initialized if (m_lastrefresh > 0 && Util.EnvironmentTickCountSubtract(m_lastrefresh) < m_refreshtime) return; - + m_log.DebugFormat("[SIMIAN MAPTILE] map refresh fired"); lock (m_scenes) { @@ -169,7 +170,7 @@ namespace OpenSim.Region.OptionalModules.Simian m_lastrefresh = Util.EnvironmentTickCount(); } - + /// /// /// @@ -211,7 +212,7 @@ namespace OpenSim.Region.OptionalModules.Simian HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(m_serverUrl); request.Timeout = 20000; request.ReadWriteTimeout = 5000; - + using (HttpWebResponse response = MultipartForm.Post(request, postParameters)) { using (Stream responseStream = response.GetResponseStream()) From 722f0ba18cbea725235f1c31cf3bd3d6a66def29 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 23:06:24 +0000 Subject: [PATCH 16/62] Put something in the ImprovedInstantMessage.BinaryBucket for llInstantMessage() to stop this crashing viewer 2.4.0 (1.23.5 was fine with this). We're putting in a string of format " which appears to be the expected value. This resolves http://opensimulator.org/mantis/view.php?id=5356 --- OpenSim/Framework/Util.cs | 10 ++++++++++ .../ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index d1d8736062..533e53abd5 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -1334,6 +1334,11 @@ namespace OpenSim.Framework return (ipaddr1 != null) ? "http://" + ipaddr1.ToString() + ":" + port1 : uri; } + public static byte[] StringToBytes256(string str, params object[] args) + { + return StringToBytes256(string.Format(str, args)); + } + public static byte[] StringToBytes256(string str) { if (String.IsNullOrEmpty(str)) { return Utils.EmptyBytes; } @@ -1352,6 +1357,11 @@ namespace OpenSim.Framework return data; } + public static byte[] StringToBytes1024(string str, params object[] args) + { + return StringToBytes1024(string.Format(str, args)); + } + public static byte[] StringToBytes1024(string str) { if (String.IsNullOrEmpty(str)) { return Utils.EmptyBytes; } diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e8da274d22..73fe16090c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3063,12 +3063,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api msg.ParentEstateID = 0; //ParentEstateID; msg.Position = Vector3.Zero;// new Vector3(m_host.AbsolutePosition); msg.RegionID = World.RegionInfo.RegionID.Guid;//RegionID.Guid; - msg.binaryBucket = new byte[0];// binaryBucket; + msg.binaryBucket + = Util.StringToBytes256( + "{0}/{1}/{2}/{3}", + World.RegionInfo.RegionName, + (int)Math.Floor(m_host.AbsolutePosition.X), + (int)Math.Floor(m_host.AbsolutePosition.Y), + (int)Math.Floor(m_host.AbsolutePosition.Z)); if (m_TransferModule != null) { m_TransferModule.SendInstantMessage(msg, delegate(bool success) {}); } + ScriptSleep(2000); } From 5b7a5a5b8b6221b2fe42f645c757c2e5e9132aa6 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 23:14:21 +0000 Subject: [PATCH 17/62] Add position to IM sent from llInstantMessage(), to better fulfill client expectations --- .../Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 73fe16090c..72ee495906 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -3061,7 +3061,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api msg.fromGroup = false;// fromGroup; msg.offline = (byte)0; //offline; msg.ParentEstateID = 0; //ParentEstateID; - msg.Position = Vector3.Zero;// new Vector3(m_host.AbsolutePosition); + msg.Position = new Vector3(m_host.AbsolutePosition); msg.RegionID = World.RegionInfo.RegionID.Guid;//RegionID.Guid; msg.binaryBucket = Util.StringToBytes256( From 1ffd70cef7dcabfe9c680affcc95de3bcd913ecd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 4 Feb 2011 23:20:10 +0000 Subject: [PATCH 18/62] minor: remove some mono compiler warnings --- .../Rest/Inventory/RestAppearanceServices.cs | 6 +++--- .../Rest/Inventory/RestInventoryServices.cs | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs index 019ca73dd1..0188eb716e 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestAppearanceServices.cs @@ -44,7 +44,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // private static readonly int PARM_PATH = 1; - private bool enabled = false; +// private bool enabled = false; private string qPrefix = "appearance"; /// @@ -74,7 +74,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory // Activate if everything went OK - enabled = true; +// enabled = true; Rest.Log.InfoFormat("{0} User appearance services initialization complete", MsgId); } @@ -95,7 +95,7 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public void Close() { - enabled = false; +// enabled = false; Rest.Log.InfoFormat("{0} User appearance services closing down", MsgId); } diff --git a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs index c3cf08c18d..b4156621bb 100644 --- a/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs +++ b/OpenSim/ApplicationPlugins/Rest/Inventory/RestInventoryServices.cs @@ -46,12 +46,12 @@ namespace OpenSim.ApplicationPlugins.Rest.Inventory public class RestInventoryServices : IRest { // private static readonly int PARM_USERID = 0; - private static readonly int PARM_PATH = 1; +// private static readonly int PARM_PATH = 1; // private bool enabled = false; private string qPrefix = "inventory"; - private static readonly string PRIVATE_ROOT_NAME = "My Inventory"; +// private static readonly string PRIVATE_ROOT_NAME = "My Inventory"; /// /// The constructor makes sure that the service prefix is absolute From cdd64bb8f51df51858b841de4def7808735b02dd Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 5 Feb 2011 00:15:25 +0000 Subject: [PATCH 19/62] For now, reinstate the call to World.GridService.GetRegionsByName() commented out in 933f47e Even though we don't use the results, just getting the regions may have side effects in making hypergrid links available for the later World.RequestTeleportLocation() --- .../Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index c0c790dd28..3f8735e0c1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -702,7 +702,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // and convert the regionName to the target region if (regionName.Contains(".") && regionName.Contains(":")) { -// List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); + World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); +// List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); + string[] parts = regionName.Split(new char[] { ':' }); if (parts.Length > 2) regionName = parts[0] + ':' + parts[1] + "/ " + parts[2]; From f5a3eb9fd547df043b00a2934d891dcfff3142ab Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Feb 2011 17:05:45 -0800 Subject: [PATCH 20/62] Added a config var to HGInventoryAccessModule called OutboundPermission that controls whether the sim lets asset POSTs happen to foreign grids or not. It's True by default. If ppl want to allow foreign visitors but don't want to allow any assets out of their grid, they should set this to False. This is the beginning of policies for these things... --- .../InventoryAccess/HGInventoryAccessModule.cs | 8 ++++++-- bin/config-include/GridCommon.ini.example | 4 ++++ bin/config-include/HyperSimianGrid.ini | 11 +++++++++++ bin/config-include/StandaloneCommon.ini.example | 4 ++++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 34b811428d..4565d103ff 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs @@ -55,6 +55,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess } private string m_ProfileServerURI; + private bool m_OutboundPermission; // private bool m_Initialized = false; @@ -78,7 +79,10 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess IConfig thisModuleConfig = source.Configs["HGInventoryAccessModule"]; if (thisModuleConfig != null) + { m_ProfileServerURI = thisModuleConfig.GetString("ProfileServerURI", string.Empty); + m_OutboundPermission = thisModuleConfig.GetBoolean("OutboundPermission", true); + } else m_log.Warn("[HG INVENTORY ACCESS MODULE]: HGInventoryAccessModule configs not found. ProfileServerURI not set!"); } @@ -103,7 +107,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess public void UploadInventoryItem(UUID avatarID, UUID assetID, string name, int userlevel) { string userAssetServer = string.Empty; - if (IsForeignUser(avatarID, out userAssetServer)) + if (IsForeignUser(avatarID, out userAssetServer) && m_OutboundPermission) { Util.FireAndForget(delegate { m_assMapper.Post(assetID, avatarID, userAssetServer); }); } @@ -197,7 +201,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess if (IsForeignUser(sender, out userAssetServer)) m_assMapper.Get(item.AssetID, sender, userAssetServer); - if (IsForeignUser(receiver, out userAssetServer)) + if (IsForeignUser(receiver, out userAssetServer) && m_OutboundPermission) m_assMapper.Post(item.AssetID, receiver, userAssetServer); } diff --git a/bin/config-include/GridCommon.ini.example b/bin/config-include/GridCommon.ini.example index 761e5eb1dd..e1bcf00f51 100644 --- a/bin/config-include/GridCommon.ini.example +++ b/bin/config-include/GridCommon.ini.example @@ -88,6 +88,10 @@ ; accessible from other grids ; ProfileServerURI = "http://mygridserver.com:8002/user" + ;; If you want to protect your assets from being copied by foreign visitors + ;; uncomment the next line. You may want to do this on sims that have licensed content. + ; OutboundPermission = False + [Modules] ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists. diff --git a/bin/config-include/HyperSimianGrid.ini b/bin/config-include/HyperSimianGrid.ini index 0b011168d8..89d6be79e3 100644 --- a/bin/config-include/HyperSimianGrid.ini +++ b/bin/config-include/HyperSimianGrid.ini @@ -82,3 +82,14 @@ [Profiles] Module = "SimianProfiles" + +[HGInventoryAccessModule] + ; + ; === HG ONLY === + ; Change this to your profile server + ; accessible from other grids + ; + ProfileServerURI = "http://mygridserver.com:8002/user" + ;; If you want to protect your assets from being copied by foreign visitors + ;; uncomment the next line. You may want to do this on sims that have licensed content. + ; OutboundPermission = False diff --git a/bin/config-include/StandaloneCommon.ini.example b/bin/config-include/StandaloneCommon.ini.example index 4956bc34fa..213219c12b 100644 --- a/bin/config-include/StandaloneCommon.ini.example +++ b/bin/config-include/StandaloneCommon.ini.example @@ -33,6 +33,10 @@ [HGInventoryAccessModule] ProfileServerURI = "http://127.0.0.1:9000/profiles" + ;; If you want to protect your assets from being copied by foreign visitors + ;; uncomment the next line. You may want to do this on sims that have licensed content. + ; OutboundPermission = False + [Modules] ;; Choose 0 or 1 cache modules, and the corresponding config file, if it exists. From 632babf8fba8180764b359b9716eaac904b1b4ac Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Fri, 4 Feb 2011 19:19:38 -0800 Subject: [PATCH 21/62] Added an additional debug message, and removed a bunch of files that weren't being used anymore -- the old RemotsInventory connectors stuff. --- .../Inventory/HGInventoryBroker.cs | 5 + .../RemoteInventoryServiceConnector.cs | 362 ----------- .../Inventory/HGInventoryServiceConnector.cs | 335 ---------- .../Inventory/ISessionAuthInventoryService.cs | 140 ----- .../Inventory/InventoryServiceConnector.cs | 582 ------------------ .../QuickAndDirtyInventoryServiceConnector.cs | 196 ------ 6 files changed, 5 insertions(+), 1615 deletions(-) delete mode 100644 OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs delete mode 100644 OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs index 39410b561b..3f63db371f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/HGInventoryBroker.cs @@ -200,6 +200,11 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory return; } } + else + { + m_log.DebugFormat("[HG INVENTORY CONNECTOR]: User {0} does not have InventoryServerURI. OH NOES!", userID); + return; + } } } } diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs deleted file mode 100644 index 9213132866..0000000000 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Inventory/RemoteInventoryServiceConnector.cs +++ /dev/null @@ -1,362 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using System; -using System.Collections.Generic; -using System.Reflection; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Statistics; -using OpenSim.Services.Connectors; -using OpenSim.Region.Framework.Interfaces; -using OpenSim.Region.Framework.Scenes; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Inventory -{ - public class RemoteInventoryServicesConnector : BaseInventoryConnector, ISharedRegionModule, IInventoryService - { - private static readonly ILog m_log = - LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); - - private bool m_Enabled = false; - private bool m_Initialized = false; - private Scene m_Scene; - private InventoryServicesConnector m_RemoteConnector; - - private IUserManagement m_UserManager; - private IUserManagement UserManager - { - get - { - if (m_UserManager == null) - { - m_UserManager = m_Scene.RequestModuleInterface(); - } - return m_UserManager; - } - } - - - public Type ReplaceableInterface - { - get { return null; } - } - - public string Name - { - get { return "RemoteInventoryServicesConnector"; } - } - - public RemoteInventoryServicesConnector() - { - } - - public RemoteInventoryServicesConnector(IConfigSource source) - { - Init(source); - } - - protected override void Init(IConfigSource source) - { - m_RemoteConnector = new InventoryServicesConnector(source); - base.Init(source); - } - - #region ISharedRegionModule - - public void Initialise(IConfigSource source) - { - IConfig moduleConfig = source.Configs["Modules"]; - if (moduleConfig != null) - { - string name = moduleConfig.GetString("InventoryServices", ""); - if (name == Name) - { - Init(source); - m_Enabled = true; - - m_log.Info("[INVENTORY CONNECTOR]: Remote inventory enabled"); - } - } - } - - public void PostInitialise() - { - } - - public void Close() - { - } - - public void AddRegion(Scene scene) - { -// m_Scene = scene; - //m_log.Debug("[XXXX] Adding scene " + m_Scene.RegionInfo.RegionName); - - if (!m_Enabled) - return; - - if (!m_Initialized) - { - m_Initialized = true; - } - - scene.RegisterModuleInterface(this); - m_cache.AddRegion(scene); - - if (m_Scene == null) - m_Scene = scene; - } - - public void RemoveRegion(Scene scene) - { - if (!m_Enabled) - return; - - m_cache.RemoveRegion(scene); - } - - public void RegionLoaded(Scene scene) - { - if (!m_Enabled) - return; - - m_log.InfoFormat("[INVENTORY CONNECTOR]: Enabled remote inventory for region {0}", scene.RegionInfo.RegionName); - - } - - #endregion ISharedRegionModule - - #region IInventoryService - - public override bool CreateUserInventory(UUID user) - { - return false; - } - - public override List GetInventorySkeleton(UUID userId) - { - return new List(); - } - - public override InventoryCollection GetUserInventory(UUID userID) - { - return null; - } - - public override void GetUserInventory(UUID userID, InventoryReceiptCallback callback) - { - UUID sessionID = GetSessionID(userID); - try - { - m_RemoteConnector.GetUserInventory(userID.ToString(), sessionID, callback); - } - catch (Exception e) - { - if (StatsManager.SimExtraStats != null) - StatsManager.SimExtraStats.AddInventoryServiceRetrievalFailure(); - - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Request inventory operation failed, {0} {1}", - e.Source, e.Message); - } - - } - - // inherited. See base class - // public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - - public override Dictionary GetSystemFolders(UUID userID) - { - UUID sessionID = GetSessionID(userID); - return m_RemoteConnector.GetSystemFolders(userID.ToString(), sessionID); - } - - public override InventoryCollection GetFolderContent(UUID userID, UUID folderID) - { - UUID sessionID = GetSessionID(userID); - try - { - InventoryCollection invCol = m_RemoteConnector.GetFolderContent(userID.ToString(), folderID, sessionID); - foreach (InventoryItemBase item in invCol.Items) - UserManager.AddUser(item.CreatorIdAsUuid, item.CreatorData); - return invCol; - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation failed, {0} {1}", - e.Source, e.Message); - } - InventoryCollection nullCollection = new InventoryCollection(); - nullCollection.Folders = new List(); - nullCollection.Items = new List(); - nullCollection.UserID = userID; - return nullCollection; - } - - public override List GetFolderItems(UUID userID, UUID folderID) - { - UUID sessionID = GetSessionID(userID); - return m_RemoteConnector.GetFolderItems(userID.ToString(), folderID, sessionID); - } - - public override bool AddFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.AddFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool UpdateFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.UpdateFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool MoveFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.MoveFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool DeleteFolders(UUID ownerID, List folderIDs) - { - if (folderIDs == null) - return false; - if (folderIDs.Count == 0) - return false; - - UUID sessionID = GetSessionID(ownerID); - return m_RemoteConnector.DeleteFolders(ownerID.ToString(), folderIDs, sessionID); - } - - - public override bool PurgeFolder(InventoryFolderBase folder) - { - if (folder == null) - return false; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.PurgeFolder(folder.Owner.ToString(), folder, sessionID); - } - - // public bool AddItem(InventoryItemBase item) inherited - // Uses AddItemPlain - - protected override bool AddItemPlain(InventoryItemBase item) - { - if (item == null) - return false; - - UUID sessionID = GetSessionID(item.Owner); - return m_RemoteConnector.AddItem(item.Owner.ToString(), item, sessionID); - } - - public override bool UpdateItem(InventoryItemBase item) - { - if (item == null) - return false; - - UUID sessionID = GetSessionID(item.Owner); - return m_RemoteConnector.UpdateItem(item.Owner.ToString(), item, sessionID); - } - - public override bool MoveItems(UUID ownerID, List items) - { - if (items == null) - return false; - - UUID sessionID = GetSessionID(ownerID); - return m_RemoteConnector.MoveItems(ownerID.ToString(), items, sessionID); - } - - - public override bool DeleteItems(UUID ownerID, List itemIDs) - { - if (itemIDs == null) - return false; - if (itemIDs.Count == 0) - return true; - - UUID sessionID = GetSessionID(ownerID); - return m_RemoteConnector.DeleteItems(ownerID.ToString(), itemIDs, sessionID); - } - - public override InventoryItemBase GetItem(InventoryItemBase item) - { - if (item == null) - return null; - - UUID sessionID = GetSessionID(item.Owner); - return m_RemoteConnector.QueryItem(item.Owner.ToString(), item, sessionID); - } - - public override InventoryFolderBase GetFolder(InventoryFolderBase folder) - { - if (folder == null) - return null; - - UUID sessionID = GetSessionID(folder.Owner); - return m_RemoteConnector.QueryFolder(folder.Owner.ToString(), folder, sessionID); - } - - public override bool HasInventoryForUser(UUID userID) - { - return false; - } - - public override List GetActiveGestures(UUID userId) - { - return new List(); - } - - public override int GetAssetPermissions(UUID userID, UUID assetID) - { - UUID sessionID = GetSessionID(userID); - return m_RemoteConnector.GetAssetPermissions(userID.ToString(), assetID, sessionID); - } - - - #endregion - - private UUID GetSessionID(UUID userID) - { - return UUID.Zero; - } - - } -} diff --git a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs deleted file mode 100644 index 9878855355..0000000000 --- a/OpenSim/Services/Connectors/Inventory/HGInventoryServiceConnector.cs +++ /dev/null @@ -1,335 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using Nini.Config; -using System; -using System.Collections.Generic; -using System.Reflection; -using OpenSim.Framework; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors.Inventory -{ - public class HGInventoryServiceConnector : ISessionAuthInventoryService - { - private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); - - private Dictionary m_connectors = new Dictionary(); - - public HGInventoryServiceConnector(IConfigSource source) - { - IConfig moduleConfig = source.Configs["Modules"]; - if (moduleConfig != null) - { - - IConfig inventoryConfig = source.Configs["InventoryService"]; - if (inventoryConfig == null) - { - m_log.Error("[HG INVENTORY SERVICE]: InventoryService missing from OpenSim.ini"); - return; - } - - m_log.Info("[HG INVENTORY SERVICE]: HG inventory service enabled"); - } - } - - private bool StringToUrlAndUserID(string id, out string url, out string userID) - { - url = String.Empty; - userID = String.Empty; - - Uri assetUri; - - if (Uri.TryCreate(id, UriKind.Absolute, out assetUri) && - assetUri.Scheme == Uri.UriSchemeHttp) - { - url = "http://" + assetUri.Authority; - userID = assetUri.LocalPath.Trim(new char[] { '/' }); - return true; - } - - return false; - } - private ISessionAuthInventoryService GetConnector(string url) - { - InventoryServicesConnector connector = null; - lock (m_connectors) - { - if (m_connectors.ContainsKey(url)) - { - connector = m_connectors[url]; - } - else - { - // We're instantiating this class explicitly, but this won't - // work in general, because the remote grid may be running - // an inventory server that has a different protocol. - // Eventually we will want a piece of protocol asking - // the remote server about its kind. Definitely cool thing to do! - connector = new InventoryServicesConnector(url); - m_connectors.Add(url, connector); - } - } - return connector; - } - - public string Host - { - get { return string.Empty; } - } - - public void GetUserInventory(string id, UUID sessionID, InventoryReceiptCallback callback) - { - m_log.Debug("[HGInventory]: GetUserInventory " + id); - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - connector.GetUserInventory(userID, sessionID, callback); - } - - } - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - public Dictionary GetSystemFolders(string id, UUID sessionID) - { - m_log.Debug("[HGInventory]: GetSystemFolders " + id); - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetSystemFolders(userID, sessionID); - } - - return new Dictionary(); - } - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - public InventoryCollection GetFolderContent(string id, UUID folderID, UUID sessionID) - { - m_log.Debug("[HGInventory]: GetFolderContent " + id); - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetFolderContent(userID, folderID, sessionID); - } - - return null; - } - - public bool AddFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.AddFolder(userID, folder, sessionID); - } - return false; - } - - public bool UpdateFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.UpdateFolder(userID, folder, sessionID); - } - return false; - } - - public bool MoveFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.MoveFolder(userID, folder, sessionID); - } - return false; - } - - public bool DeleteFolders(string id, List folders, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.DeleteFolders(userID, folders, sessionID); - } - return false; - } - - public bool PurgeFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.PurgeFolder(userID, folder, sessionID); - } - return false; - } - - public List GetFolderItems(string id, UUID folderID, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetFolderItems(userID, folderID, sessionID); - } - return new List(); - } - - public bool AddItem(string id, InventoryItemBase item, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.AddItem(userID, item, sessionID); - } - return false; - } - - public bool UpdateItem(string id, InventoryItemBase item, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.UpdateItem(userID, item, sessionID); - } - return false; - } - - public bool MoveItems(string id, List items, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.MoveItems(userID, items, sessionID); - } - return false; - } - - public bool DeleteItems(string id, List itemIDs, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.DeleteItems(userID, itemIDs, sessionID); - } - return false; - } - - public InventoryItemBase QueryItem(string id, InventoryItemBase item, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - //m_log.DebugFormat("[HGInventory CONNECTOR]: calling {0}", url); - ISessionAuthInventoryService connector = GetConnector(url); - return connector.QueryItem(userID, item, sessionID); - } - return null; - } - - public InventoryFolderBase QueryFolder(string id, InventoryFolderBase folder, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.QueryFolder(userID, folder, sessionID); - } - return null; - } - - public int GetAssetPermissions(string id, UUID assetID, UUID sessionID) - { - string url = string.Empty; - string userID = string.Empty; - - if (StringToUrlAndUserID(id, out url, out userID)) - { - ISessionAuthInventoryService connector = GetConnector(url); - return connector.GetAssetPermissions(userID, assetID, sessionID); - } - return 0; - } - } -} diff --git a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs b/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs deleted file mode 100644 index da8c7e2e61..0000000000 --- a/OpenSim/Services/Connectors/Inventory/ISessionAuthInventoryService.cs +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using System.Collections.Generic; -using OpenSim.Framework; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors -{ - /// - /// Defines all operations to access a remote inventory service - /// using session authentication as a form of security. - /// - public interface ISessionAuthInventoryService - { - string Host - { - get; - } - - /// - /// Request the inventory for a user. This is an asynchronous operation that will call the callback when the - /// inventory has been received - /// - /// - /// - void GetUserInventory(string userID, UUID session_id, InventoryReceiptCallback callback); - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - Dictionary GetSystemFolders(string userID, UUID session_id); - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - InventoryCollection GetFolderContent(string userID, UUID folderID, UUID session_id); - - /// - /// Add a new folder to the user's inventory - /// - /// - /// true if the folder was successfully added - bool AddFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Update a folder in the user's inventory - /// - /// - /// true if the folder was successfully updated - bool UpdateFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Move an inventory folder to a new location - /// - /// A folder containing the details of the new location - /// true if the folder was successfully moved - bool MoveFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Delete a list of inventory folders (from trash) - /// - bool DeleteFolders(string userID, List folders, UUID session_id); - - /// - /// Purge an inventory folder of all its items and subfolders. - /// - /// - /// true if the folder was successfully purged - bool PurgeFolder(string userID, InventoryFolderBase folder, UUID session_id); - - /// - /// Get items from a folder. - /// - /// - /// true if the folder was successfully purged - List GetFolderItems(string userID, UUID folderID, UUID session_id); - - /// - /// Add a new item to the user's inventory - /// - /// - /// true if the item was successfully added - bool AddItem(string userID, InventoryItemBase item, UUID session_id); - - /// - /// Update an item in the user's inventory - /// - /// - /// true if the item was successfully updated - bool UpdateItem(string userID, InventoryItemBase item, UUID session_id); - - bool MoveItems(string userID, List items, UUID session_id); - - /// - /// Delete an item from the user's inventory - /// - /// - /// true if the item was successfully deleted - bool DeleteItems(string userID, List itemIDs, UUID session_id); - - InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID session_id); - - InventoryFolderBase QueryFolder(string userID, InventoryFolderBase item, UUID session_id); - - int GetAssetPermissions(string userID, UUID assetID, UUID session_id); - - } -} diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs deleted file mode 100644 index f86b453665..0000000000 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ /dev/null @@ -1,582 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors -{ - public class InventoryServicesConnector : ISessionAuthInventoryService - { - private static readonly ILog m_log = - LogManager.GetLogger( - MethodBase.GetCurrentMethod().DeclaringType); - - private string m_ServerURI = String.Empty; - - private Dictionary m_RequestingInventory = new Dictionary(); - private Dictionary m_RequestTime = new Dictionary(); - - public InventoryServicesConnector() - { - } - - public InventoryServicesConnector(string serverURI) - { - m_ServerURI = serverURI.TrimEnd('/'); - } - - public InventoryServicesConnector(IConfigSource source) - { - Initialise(source); - } - - public virtual void Initialise(IConfigSource source) - { - IConfig inventoryConfig = source.Configs["InventoryService"]; - if (inventoryConfig == null) - { - m_log.Error("[INVENTORY CONNECTOR]: InventoryService missing from OpenSim.ini"); - throw new Exception("InventoryService missing from OpenSim.ini"); - } - - string serviceURI = inventoryConfig.GetString("InventoryServerURI", - String.Empty); - - if (serviceURI == String.Empty) - { - m_log.Error("[INVENTORY CONNECTOR]: No Server URI named in section InventoryService"); - throw new Exception("Unable to proceed. Please make sure your ini files in config-include are updated according to .example's"); - } - m_ServerURI = serviceURI.TrimEnd('/'); - } - - #region ISessionAuthInventoryService - - public string Host - { - get { return m_ServerURI; } - } - - /// - /// Caller must catch eventual Exceptions. - /// - /// - /// - /// - public void GetUserInventory(string userIDStr, UUID sessionID, InventoryReceiptCallback callback) - { - UUID userID = UUID.Zero; - if (UUID.TryParse(userIDStr, out userID)) - { - lock (m_RequestingInventory) - { - // *HACK ALERT* - - // If an inventory request times out, it blocks any further requests from the - // same user, even after a relog. This is bad, and makes me sad. - - // Really, we should detect a timeout and report a failure to the callback, - // BUT in my testing i found that it's hard to detect a timeout.. sometimes, - // a partial response is recieved, and sometimes a null response. - - // So, for now, add a timer of ten seconds (which is the request timeout). - - // This should basically have the same effect. - - lock (m_RequestTime) - { - if (m_RequestTime.ContainsKey(userID)) - { - TimeSpan interval = DateTime.Now - m_RequestTime[userID]; - if (interval.TotalSeconds > 10) - { - m_RequestTime.Remove(userID); - if (m_RequestingInventory.ContainsKey(userID)) - { - m_RequestingInventory.Remove(userID); - } - } - } - if (!m_RequestingInventory.ContainsKey(userID)) - { - m_RequestTime.Add(userID, DateTime.Now); - m_RequestingInventory.Add(userID, callback); - } - else - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetUserInventory - ignoring repeated request for user {0}", userID); - return; - } - } - } - - m_log.InfoFormat( - "[INVENTORY CONNECTOR]: Requesting inventory from {0}/GetInventory/ for user {1}", - m_ServerURI, userID); - - RestSessionObjectPosterResponse requester - = new RestSessionObjectPosterResponse(); - requester.ResponseCallback = InventoryResponse; - - requester.BeginPostObject(m_ServerURI + "/GetInventory/", userID.Guid, sessionID.ToString(), userID.ToString()); - } - } - - /// - /// Gets the user folder for the given folder-type - /// - /// - /// - /// - public Dictionary GetSystemFolders(string userID, UUID sessionID) - { - List folders = null; - Dictionary dFolders = new Dictionary(); - try - { - folders = SynchronousRestSessionObjectPoster>.BeginPostObject( - "POST", m_ServerURI + "/SystemFolders/", new Guid(userID), sessionID.ToString(), userID.ToString()); - - foreach (InventoryFolderBase f in folders) - dFolders[(AssetType)f.Type] = f; - - return dFolders; - } - catch (Exception e) - { - // Maybe we're talking to an old inventory server. Try this other thing. - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetSystemFolders operation failed, {0} {1} (old sever?). Trying GetInventory.", - e.Source, e.Message); - - try - { - InventoryCollection inventory = SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/GetInventory/", new Guid(userID), sessionID.ToString(), userID.ToString()); - folders = inventory.Folders; - } - catch (Exception ex) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetInventory operation also failed, {0} {1}. Giving up.", - e.Source, ex.Message); - } - - if ((folders != null) && (folders.Count > 0)) - { - m_log.DebugFormat("[INVENTORY CONNECTOR]: Received entire inventory ({0} folders) for user {1}", - folders.Count, userID); - foreach (InventoryFolderBase f in folders) - { - if ((f.Type != (short)AssetType.Folder) && (f.Type != (short)AssetType.Unknown)) - dFolders[(AssetType)f.Type] = f; - } - - UUID rootFolderID = dFolders[AssetType.Animation].ParentID; - InventoryFolderBase rootFolder = new InventoryFolderBase(rootFolderID, new UUID(userID)); - rootFolder = QueryFolder(userID, rootFolder, sessionID); - dFolders[AssetType.Folder] = rootFolder; - m_log.DebugFormat("[INVENTORY CONNECTOR]: {0} system folders for user {1}", dFolders.Count, userID); - return dFolders; - } - } - - return new Dictionary(); - } - - /// - /// Gets everything (folders and items) inside a folder - /// - /// - /// - /// - public InventoryCollection GetFolderContent(string userID, UUID folderID, UUID sessionID) - { - try - { - // normal case - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/GetFolderContent/", folderID.Guid, sessionID.ToString(), userID.ToString()); - } - catch (TimeoutException e) - { - m_log.ErrorFormat( - "[INVENTORY CONNECTOR]: GetFolderContent operation to {0} for {1} timed out {2} {3}.", - m_ServerURI, folderID, e.Source, e.Message); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation failed for {0}, {1} {2} (old server?).", - folderID, e.Source, e.Message); - } - - InventoryCollection nullCollection = new InventoryCollection(); - nullCollection.Folders = new List(); - nullCollection.Items = new List(); - nullCollection.UserID = new UUID(userID); - return nullCollection; - } - - public bool AddFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/NewFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public bool UpdateFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/UpdateFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public bool DeleteFolders(string userID, List folderIDs, UUID sessionID) - { - try - { - List guids = new List(); - foreach (UUID u in folderIDs) - guids.Add(u.Guid); - return SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - "POST", m_ServerURI + "/DeleteFolders/", guids, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory folders operation failed, {0} {1}", - e.Source, e.Message); - } - - return false; - } - - public bool MoveFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/MoveFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public bool PurgeFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/PurgeFolder/", folder, sessionID.ToString(), folder.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Purge inventory folder operation failed for {0} {1}, {2} {3}", - folder.Name, folder.ID, e.Source, e.Message); - } - - return false; - } - - public List GetFolderItems(string userID, UUID folderID, UUID sessionID) - { - try - { - InventoryFolderBase folder = new InventoryFolderBase(folderID, new UUID(userID)); - return SynchronousRestSessionObjectPoster>.BeginPostObject( - "POST", m_ServerURI + "/GetItems/", folder, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Get folder items operation failed for folder {0}, {1} {2}", - folderID, e.Source, e.Message); - } - - return null; - } - - public bool AddItem(string userID, InventoryItemBase item, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/NewItem/", item, sessionID.ToString(), item.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory item operation failed for {0} {1}, {2} {3}", - item.Name, item.ID, e.Source, e.Message); - } - - return false; - } - - public bool UpdateItem(string userID, InventoryItemBase item, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/NewItem/", item, sessionID.ToString(), item.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update new inventory item operation failed for {0} {1}, {2} {3}", - item.Name, item.ID, e.Source, e.Message); - } - - return false; - } - - /** - * MoveItems Async group - */ - - delegate void MoveItemsDelegate(string userID, List items, UUID sessionID); - - private void MoveItemsAsync(string userID, List items, UUID sessionID) - { - if (items == null) - { - m_log.WarnFormat("[INVENTORY CONNECTOR]: request to move items got a null list."); - return; - } - - try - { - //SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - // "POST", m_ServerURI + "/MoveItems/", items, sessionID.ToString(), userID.ToString()); - - //// Success - //return; - string uri = m_ServerURI + "/inventory/" + userID; - if (SynchronousRestObjectRequester. - MakeRequest, bool>("PUT", uri, items)) - m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster succeeded {1}", items.Count, uri); - else - m_log.DebugFormat("[INVENTORY CONNECTOR]: move {0} items poster failed {1}", items.Count, uri); ; - - return; - - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory items operation failed, {0} {1} (old server?). Trying slow way.", - e.Source, e.Message); - } - - } - - private void MoveItemsCompleted(IAsyncResult iar) - { - MoveItemsDelegate d = (MoveItemsDelegate)iar.AsyncState; - d.EndInvoke(iar); - } - - public bool MoveItems(string userID, List items, UUID sessionID) - { - MoveItemsDelegate d = MoveItemsAsync; - d.BeginInvoke(userID, items, sessionID, MoveItemsCompleted, d); - return true; - } - - public bool DeleteItems(string userID, List items, UUID sessionID) - { - try - { - List guids = new List(); - foreach (UUID u in items) - guids.Add(u.Guid); - return SynchronousRestSessionObjectPoster, bool>.BeginPostObject( - "POST", m_ServerURI + "/DeleteItem/", guids, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory items operation failed, {0} {1}", - e.Source, e.Message); - } - - return false; - } - - public InventoryItemBase QueryItem(string userID, InventoryItemBase item, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/QueryItem/", item, sessionID.ToString(), item.Owner.ToString()); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Query inventory item operation failed, {0} {1}", - e.Source, e.Message); - } - - return null; - } - - public InventoryFolderBase QueryFolder(string userID, InventoryFolderBase folder, UUID sessionID) - { - try - { - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/QueryFolder/", folder, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Query inventory folder operation failed, {0} {1}", - e.Source, e.Message); - } - - return null; - } - - public int GetAssetPermissions(string userID, UUID assetID, UUID sessionID) - { - try - { - InventoryItemBase item = new InventoryItemBase(); - item.Owner = new UUID(userID); - item.AssetID = assetID; - return SynchronousRestSessionObjectPoster.BeginPostObject( - "POST", m_ServerURI + "/AssetPermissions/", item, sessionID.ToString(), userID); - } - catch (Exception e) - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: AssetPermissions operation failed, {0} {1}", - e.Source, e.Message); - } - - return 0; - } - - #endregion - - /// - /// Callback used by the inventory server GetInventory request - /// - /// - private void InventoryResponse(InventoryCollection response) - { - UUID userID = response.UserID; - InventoryReceiptCallback callback = null; - lock (m_RequestingInventory) - { - if (m_RequestingInventory.ContainsKey(userID)) - { - callback = m_RequestingInventory[userID]; - m_RequestingInventory.Remove(userID); - lock (m_RequestTime) - { - if (m_RequestTime.ContainsKey(userID)) - { - m_RequestTime.Remove(userID); - } - } - } - else - { - m_log.WarnFormat( - "[INVENTORY CONNECTOR]: " + - "Received inventory response for {0} for which we do not have a record of requesting!", - userID); - return; - } - } - - m_log.InfoFormat("[INVENTORY CONNECTOR]: " + - "Received inventory response for user {0} containing {1} folders and {2} items", - userID, response.Folders.Count, response.Items.Count); - - InventoryFolderImpl rootFolder = null; - - ICollection folders = new List(); - ICollection items = new List(); - - foreach (InventoryFolderBase folder in response.Folders) - { - if (folder.ParentID == UUID.Zero) - { - rootFolder = new InventoryFolderImpl(folder); - folders.Add(rootFolder); - - break; - } - } - - if (rootFolder != null) - { - foreach (InventoryFolderBase folder in response.Folders) - { - if (folder.ID != rootFolder.ID) - { - folders.Add(new InventoryFolderImpl(folder)); - } - } - - foreach (InventoryItemBase item in response.Items) - { - items.Add(item); - } - } - else - { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Did not get back an inventory containing a root folder for user {0}", userID); - } - - callback(folders, items); - } - } -} diff --git a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs deleted file mode 100644 index a7aa1382c4..0000000000 --- a/OpenSim/Services/Connectors/Inventory/QuickAndDirtyInventoryServiceConnector.cs +++ /dev/null @@ -1,196 +0,0 @@ -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -using log4net; -using System; -using System.Collections.Generic; -using System.IO; -using System.Reflection; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Servers.HttpServer; -using OpenSim.Services.Interfaces; -using OpenMetaverse; - -namespace OpenSim.Services.Connectors -{ - /// - /// This connector is temporary. It's used by the user server, before that server is refactored. - /// - public class QuickAndDirtyInventoryServiceConnector : IInventoryService - { -// private static readonly ILog m_log = -// LogManager.GetLogger( -// MethodBase.GetCurrentMethod().DeclaringType); - - private string m_ServerURI = String.Empty; - - //private Dictionary m_RequestingInventory = new Dictionary(); - - public QuickAndDirtyInventoryServiceConnector() - { - } - - public QuickAndDirtyInventoryServiceConnector(string serverURI) - { - m_ServerURI = serverURI.TrimEnd('/'); - } - - /// - /// - /// - /// - /// - public bool CreateUserInventory(UUID userId) - { - return SynchronousRestObjectPoster.BeginPostObject( - "POST", m_ServerURI + "CreateInventory/", userId.Guid); - } - - /// - /// - /// - /// - /// - public List GetInventorySkeleton(UUID userId) - { - return SynchronousRestObjectPoster.BeginPostObject>( - "POST", m_ServerURI + "RootFolders/", userId.Guid); - } - - /// - /// Returns a list of all the active gestures in a user's inventory. - /// - /// - /// The of the user - /// - /// - /// A flat list of the gesture items. - /// - public List GetActiveGestures(UUID userId) - { - return SynchronousRestObjectPoster.BeginPostObject>( - "POST", m_ServerURI + "ActiveGestures/", userId.Guid); - } - - public InventoryCollection GetUserInventory(UUID userID) - { - return null; - } - - public void GetUserInventory(UUID userID, InventoryReceiptCallback callback) - { - } - - public InventoryFolderBase GetFolderForType(UUID userID, AssetType type) - { - return null; - } - - public InventoryCollection GetFolderContent(UUID userID, UUID folderID) - { - return null; - } - - public List GetFolderItems(UUID userID, UUID folderID) - { - return null; - } - - public bool AddFolder(InventoryFolderBase folder) - { - return false; - } - - public bool UpdateFolder(InventoryFolderBase folder) - { - return false; - } - - public bool MoveFolder(InventoryFolderBase folder) - { - return false; - } - - public bool DeleteFolders(UUID ownerID, List folderIDs) - { - return false; - } - - - public bool PurgeFolder(InventoryFolderBase folder) - { - return false; - } - - public bool AddItem(InventoryItemBase item) - { - return false; - } - - public bool UpdateItem(InventoryItemBase item) - { - return false; - } - - public bool MoveItems(UUID ownerID, List items) - { - return false; - } - - public bool DeleteItems(UUID owner, List itemIDs) - { - return false; - } - - public InventoryItemBase GetItem(InventoryItemBase item) - { - return null; - } - - public InventoryFolderBase GetFolder(InventoryFolderBase folder) - { - return null; - } - - public bool HasInventoryForUser(UUID userID) - { - return false; - } - - public InventoryFolderBase GetRootFolder(UUID userID) - { - return null; - } - - public int GetAssetPermissions(UUID userID, UUID assetID) - { - return 0; - } - - } -} From 4e0b0f0f4c30eeb256b88ca0f141ad7e014a5e0b Mon Sep 17 00:00:00 2001 From: Melanie Date: Sat, 5 Feb 2011 04:24:43 +0000 Subject: [PATCH 22/62] Fix a typo in the QUERYACCESS method name --- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 2601d2ac5a..c3545aa17c 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -110,7 +110,7 @@ namespace OpenSim.Server.Handlers.Simulation DoAgentDelete(request, responsedata, agentID, action, regionID); return responsedata; } - else if (method.Equals("QUERYACCESSS")) + else if (method.Equals("QUERYACCESS")) { DoQueryAccess(request, responsedata, agentID, regionID); return responsedata; From 67555994adc6b5449a0a1c21997e7bfcf880ad02 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 07:55:54 -0800 Subject: [PATCH 23/62] Amend to yesterday's deletions: forgot to delete the RemoteInventory module in th addin.xml file. --- OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml index 43de2abd15..a9d247a2b8 100644 --- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml +++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml @@ -47,7 +47,6 @@ - From 3a2a48a8cad9914862b6804cb46b21bc2c8d6bf7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 08:20:13 -0800 Subject: [PATCH 24/62] Add sane packing of ServiceURLs -- OSDMap. The old way (OSDArray) is still supported for backwards compatibility, but will be removed in the future. --- OpenSim/Framework/AgentCircuitData.cs | 30 ++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/AgentCircuitData.cs b/OpenSim/Framework/AgentCircuitData.cs index 1600bdc00d..3dbc215d46 100644 --- a/OpenSim/Framework/AgentCircuitData.cs +++ b/OpenSim/Framework/AgentCircuitData.cs @@ -220,6 +220,8 @@ namespace OpenSim.Framework args["packed_appearance"] = appmap; } + // Old, bad way. Keeping it fow now for backwards compatibility + // OBSOLETE -- soon to be deleted if (ServiceURLs != null && ServiceURLs.Count > 0) { OSDArray urls = new OSDArray(ServiceURLs.Count * 2); @@ -232,6 +234,19 @@ namespace OpenSim.Framework args["service_urls"] = urls; } + // again, this time the right way + if (ServiceURLs != null && ServiceURLs.Count > 0) + { + OSDMap urls = new OSDMap(); + foreach (KeyValuePair kvp in ServiceURLs) + { + //System.Console.WriteLine("XXX " + kvp.Key + "=" + kvp.Value); + urls[kvp.Key] = OSD.FromString((kvp.Value == null) ? string.Empty : kvp.Value.ToString()); + } + args["serviceurls"] = urls; + } + + return args; } @@ -327,7 +342,20 @@ namespace OpenSim.Framework } ServiceURLs = new Dictionary(); - if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) + // Try parse the new way, OSDMap + if (args.ContainsKey("serviceurls") && args["serviceurls"] != null && (args["serviceurls"]).Type == OSDType.Map) + { + OSDMap urls = (OSDMap)(args["serviceurls"]); + foreach (KeyValuePair kvp in urls) + { + ServiceURLs[kvp.Key] = kvp.Value.AsString(); + //System.Console.WriteLine("XXX " + kvp.Key + "=" + ServiceURLs[kvp.Key]); + + } + } + // else try the old way, OSDArray + // OBSOLETE -- soon to be deleted + else if (args.ContainsKey("service_urls") && args["service_urls"] != null && (args["service_urls"]).Type == OSDType.Array) { OSDArray urls = (OSDArray)(args["service_urls"]); for (int i = 0; i < urls.Count / 2; i++) From b20ab1063f5717a69fb3226c44b4af5228280d35 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 17:57:30 -0800 Subject: [PATCH 25/62] Added a couple of console commands to help diagnose issues: show circuits: shows the lists of agent circuit data show http-handlers: shows the currently registered http handlers --- .../Servers/HttpServer/BaseHttpServer.cs | 32 ++++++++++++ OpenSim/Region/Application/OpenSim.cs | 50 +++++++++++++++++++ 2 files changed, 82 insertions(+) diff --git a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs index d4ee7ba56d..4c35132ad1 100644 --- a/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs +++ b/OpenSim/Framework/Servers/HttpServer/BaseHttpServer.cs @@ -143,6 +143,11 @@ namespace OpenSim.Framework.Servers.HttpServer } } + public List GetStreamHandlerKeys() + { + return new List(m_streamHandlers.Keys); + } + private static string GetHandlerKey(string httpMethod, string path) { return httpMethod + ":" + path; @@ -179,6 +184,11 @@ namespace OpenSim.Framework.Servers.HttpServer } } + public List GetXmlRpcHandlerKeys() + { + return new List(m_rpcHandlers.Keys); + } + public bool AddHTTPHandler(string methodName, GenericHTTPMethod handler) { //m_log.DebugFormat("[BASE HTTP SERVER]: Registering {0}", methodName); @@ -196,6 +206,12 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetHTTPHandlerKeys() + { + return new List(m_HTTPHandlers.Keys); + } + + public bool AddPollServiceHTTPHandler(string methodName, GenericHTTPMethod handler, PollServiceEventArgs args) { bool pollHandlerResult = false; @@ -214,6 +230,12 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetPollServiceHandlerKeys() + { + return new List(m_pollHandlers.Keys); + } + + // Note that the agent string is provided simply to differentiate // the handlers - it is NOT required to be an actual agent header // value. @@ -232,6 +254,11 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetAgentHandlerKeys() + { + return new List(m_agentHandlers.Keys); + } + public bool AddLLSDHandler(string path, LLSDMethod handler) { lock (m_llsdHandlers) @@ -245,6 +272,11 @@ namespace OpenSim.Framework.Servers.HttpServer return false; } + public List GetLLSDHandlerKeys() + { + return new List(m_llsdHandlers.Keys); + } + public bool SetDefaultLLSDHandler(DefaultLLSDMethod handler) { m_defaultLlsdHandler = handler; diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index ed4b6203c7..bbcc588fcc 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -294,6 +294,14 @@ namespace OpenSim "show connections", "Show connection data", HandleShow); + m_console.Commands.AddCommand("region", false, "show circuits", + "show circuits", + "Show agent circuit data", HandleShow); + + m_console.Commands.AddCommand("region", false, "show http-handlers", + "show http-handlers", + "Show all registered http handlers", HandleShow); + m_console.Commands.AddCommand("region", false, "show modules", "show modules", "Show module data", HandleShow); @@ -943,6 +951,48 @@ namespace OpenSim MainConsole.Instance.Output(connections.ToString()); break; + case "circuits": + System.Text.StringBuilder acd = new System.Text.StringBuilder("Agent Circuits:\n"); + m_sceneManager.ForEachScene( + delegate(Scene scene) + { + //this.HttpServer. + acd.AppendFormat("{0}:\n", scene.RegionInfo.RegionName); + foreach (AgentCircuitData aCircuit in scene.AuthenticateHandler.AgentCircuits.Values) + acd.AppendFormat("\t{0} {1} ({2})\n", aCircuit.firstname, aCircuit.lastname, (aCircuit.child ? "Child" : "Root")); + } + ); + + MainConsole.Instance.Output(acd.ToString()); + break; + + case "http-handlers": + System.Text.StringBuilder handlers = new System.Text.StringBuilder("Registered HTTP Handlers:\n"); + + handlers.AppendFormat("* XMLRPC:\n"); + foreach (String s in HttpServer.GetXmlRpcHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + handlers.AppendFormat("* HTTP:\n"); + List poll = HttpServer.GetPollServiceHandlerKeys(); + foreach (String s in HttpServer.GetHTTPHandlerKeys()) + handlers.AppendFormat("\t{0} {1}\n", s, (poll.Contains(s) ? "(poll service)" : string.Empty)); + + handlers.AppendFormat("* Agent:\n"); + foreach (String s in HttpServer.GetAgentHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + handlers.AppendFormat("* LLSD:\n"); + foreach (String s in HttpServer.GetLLSDHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + handlers.AppendFormat("* StreamHandlers ({0}):\n", HttpServer.GetStreamHandlerKeys().Count); + foreach (String s in HttpServer.GetStreamHandlerKeys()) + handlers.AppendFormat("\t{0}\n", s); + + MainConsole.Instance.Output(handlers.ToString()); + break; + case "modules": MainConsole.Instance.Output("The currently loaded shared modules are:"); foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) From 30fa5ad1e29df50de99611b43adfd577696bfdda Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 19:21:12 -0800 Subject: [PATCH 26/62] One more diagnosis command: show caps --- .../Agent/Capabilities/CapabilitiesModule.cs | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs index c023a6f738..75df6cc512 100644 --- a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs +++ b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs @@ -26,12 +26,14 @@ */ using System; +using System.Collections; using System.Collections.Generic; using System.Reflection; using log4net; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Console; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; using Caps=OpenSim.Framework.Capabilities.Caps; @@ -61,6 +63,10 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities { m_scene = scene; m_scene.RegisterModuleInterface(this); + MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps", + "show capabilities", + "Shows all registered capabilities", CapabilitiesCommand); + m_log.Error("\n\n**************************************************************\n\n"); } public void RegionLoaded(Scene scene) @@ -72,7 +78,9 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities m_scene.UnregisterModuleInterface(this); } - public void PostInitialise() {} + public void PostInitialise() + { + } public void Close() {} @@ -226,5 +234,23 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities m_log.Info(" >> "+x+", "+y+": "+kvp.Value); } } + + private void CapabilitiesCommand(string module, string[] cmdparams) + { + System.Text.StringBuilder caps = new System.Text.StringBuilder(); + caps.AppendFormat("Region {0}:\n", m_scene.RegionInfo.RegionName); + + foreach (KeyValuePair kvp in m_capsHandlers) + { + caps.AppendFormat("** User {0}:\n", kvp.Key); + for (IDictionaryEnumerator kvp2 = kvp.Value.CapsHandlers.CapsDetails.GetEnumerator(); kvp2.MoveNext(); ) + { + Uri uri = new Uri(kvp2.Value.ToString()); + caps.AppendFormat(" {0} = {1}\n", kvp2.Key, uri.PathAndQuery); + } + } + + MainConsole.Instance.Output(caps.ToString()); + } } } From cc81d924cab97889538c20e9bfa45008ecfead3e Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 19:34:02 -0800 Subject: [PATCH 27/62] Fixed Caps handlers leak --- OpenSim/Framework/Capabilities/CapsHandlers.cs | 2 +- .../Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/OpenSim/Framework/Capabilities/CapsHandlers.cs b/OpenSim/Framework/Capabilities/CapsHandlers.cs index 864e6ddb7e..e1c800e907 100644 --- a/OpenSim/Framework/Capabilities/CapsHandlers.cs +++ b/OpenSim/Framework/Capabilities/CapsHandlers.cs @@ -88,8 +88,8 @@ namespace OpenSim.Framework.Capabilities /// handler to be removed public void Remove(string capsName) { - // This line must be here, or caps will break! m_httpListener.RemoveStreamHandler("POST", m_capsHandlers[capsName].Path); + m_httpListener.RemoveStreamHandler("GET", m_capsHandlers[capsName].Path); m_capsHandlers.Remove(capsName); } diff --git a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs index 75df6cc512..1d8e70ed54 100644 --- a/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs +++ b/OpenSim/Region/CoreModules/Agent/Capabilities/CapabilitiesModule.cs @@ -66,7 +66,6 @@ namespace OpenSim.Region.CoreModules.Agent.Capabilities MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps", "show capabilities", "Shows all registered capabilities", CapabilitiesCommand); - m_log.Error("\n\n**************************************************************\n\n"); } public void RegionLoaded(Scene scene) From 3411d4867d01d4cf87f09300f69d149c5269c611 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 5 Feb 2011 19:40:55 -0800 Subject: [PATCH 28/62] Honor check of m_Enabled in WorldViewModule. --- .../Region/OptionalModules/World/WorldView/WorldViewModule.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs index d4b7020542..cee8851c3a 100644 --- a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs +++ b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs @@ -71,6 +71,9 @@ namespace OpenSim.Region.OptionalModules.World.WorldView public void RegionLoaded(Scene scene) { + if (!m_Enabled) + return; + m_Generator = scene.RequestModuleInterface(); if (m_Generator == null) { From 2c7e87c45bb0d543ba0ab9342a1bc29f92fb4fd3 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 6 Feb 2011 07:51:20 -0800 Subject: [PATCH 29/62] Better output for show neighbours --- .../Grid/LocalGridServiceConnector.cs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs index 023a44c601..3c36799050 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Grid/LocalGridServiceConnector.cs @@ -247,13 +247,17 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid public void NeighboursCommand(string module, string[] cmdparams) { + System.Text.StringBuilder caps = new System.Text.StringBuilder(); + foreach (KeyValuePair kvp in m_LocalCache) { - m_log.InfoFormat("*** Neighbours of {0} {1} ***", kvp.Key, kvp.Value.RegionName); + caps.AppendFormat("*** Neighbours of {0} ({1}) ***\n", kvp.Value.RegionName, kvp.Key); List regions = kvp.Value.GetNeighbours(); foreach (GridRegion r in regions) - m_log.InfoFormat(" {0} @ {1}={2}", r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize); + caps.AppendFormat(" {0} @ {1}-{2}\n", r.RegionName, r.RegionLocX / Constants.RegionSize, r.RegionLocY / Constants.RegionSize); } + + MainConsole.Instance.Output(caps.ToString()); } } From 98ea78fc77b3dd6da185d71dfab402a0ef8780d6 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sun, 6 Feb 2011 19:39:29 -0800 Subject: [PATCH 30/62] New command: show pending-objects --- OpenSim/Region/Application/OpenSim.cs | 22 +++++++++++++++++++ .../Framework/Interfaces/ISceneViewer.cs | 1 + .../Region/Framework/Scenes/SceneViewer.cs | 8 +++++++ 3 files changed, 31 insertions(+) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index bbcc588fcc..bd1aa468ed 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -302,6 +302,10 @@ namespace OpenSim "show http-handlers", "Show all registered http handlers", HandleShow); + m_console.Commands.AddCommand("region", false, "show pending-objects", + "show pending-objects", + "Show # of objects on the pending queues of all scene viewers", HandleShow); + m_console.Commands.AddCommand("region", false, "show modules", "show modules", "Show module data", HandleShow); @@ -993,6 +997,24 @@ namespace OpenSim MainConsole.Instance.Output(handlers.ToString()); break; + case "pending-objects": + System.Text.StringBuilder pending = new System.Text.StringBuilder("Pending objects:\n"); + m_sceneManager.ForEachScene( + delegate(Scene scene) + { + scene.ForEachScenePresence( + delegate(ScenePresence sp) + { + pending.AppendFormat("{0}: {1} {2} pending\n", + scene.RegionInfo.RegionName, sp.Name, sp.SceneViewer.GetPendingObjectsCount()); + } + ); + } + ); + + MainConsole.Instance.Output(pending.ToString()); + break; + case "modules": MainConsole.Instance.Output("The currently loaded shared modules are:"); foreach (IRegionModule module in m_moduleLoader.GetLoadedSharedModules) diff --git a/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs b/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs index 7251d57f69..2397f223b3 100644 --- a/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs +++ b/OpenSim/Region/Framework/Interfaces/ISceneViewer.cs @@ -36,5 +36,6 @@ namespace OpenSim.Region.Framework.Interfaces void Close(); void QueuePartForUpdate(SceneObjectPart part); void SendPrimUpdates(); + int GetPendingObjectsCount(); } } diff --git a/OpenSim/Region/Framework/Scenes/SceneViewer.cs b/OpenSim/Region/Framework/Scenes/SceneViewer.cs index b44a0100a4..7c067ca148 100644 --- a/OpenSim/Region/Framework/Scenes/SceneViewer.cs +++ b/OpenSim/Region/Framework/Scenes/SceneViewer.cs @@ -205,6 +205,14 @@ namespace OpenSim.Region.Framework.Scenes Reset(); } + public int GetPendingObjectsCount() + { + if (m_pendingObjects != null) + return m_pendingObjects.Count; + + return 0; + } + public class ScenePartUpdate { public UUID FullID; From ebeef02fef1a04b5b4cfe13dad588bcce7f9ba21 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 7 Feb 2011 07:45:03 -0800 Subject: [PATCH 31/62] Hunting down mantis #5365 Revert "refactor: remove redundant null checks" This reverts commit 6e58996b4d9db202cd7795a37bd687362effef48. --- .../LindenUDP/UnackedPacketCollection.cs | 45 ++++++++++++------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 9d40688ac6..d762bef134 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -141,31 +141,46 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void ProcessQueues() { // Process all the pending adds + OutgoingPacket pendingAdd; - while (m_pendingAdds.TryDequeue(out pendingAdd)) - m_packets[pendingAdd.SequenceNumber] = pendingAdd; + if (m_pendingAdds != null) + { + while (m_pendingAdds.TryDequeue(out pendingAdd)) + { + if (pendingAdd != null && m_packets != null) + { + m_packets[pendingAdd.SequenceNumber] = pendingAdd; + } + } + } // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; OutgoingPacket ackedPacket; - while (m_pendingRemoves.TryDequeue(out pendingRemove)) + if (m_pendingRemoves != null) { - if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) + while (m_pendingRemoves.TryDequeue(out pendingRemove)) { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) + if (m_pendingRemoves != null && m_packets != null) { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); + if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) + { + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) + { + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); + } + } } } } } } -} \ No newline at end of file +} From d934add0213400f03bc4dc2d24e1b0ccee965101 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 7 Feb 2011 14:49:18 -0800 Subject: [PATCH 32/62] Thanks Tokeiito for noticing this bug. mantis #5366 --- .../Authorization/RemoteAuthorizationServiceConnector.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs index 01a2615dc0..66994facff 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/RemoteAuthorizationServiceConnector.cs @@ -139,7 +139,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization if (scene != null) { - UserAccount account = scene.UserAccountService.GetUserAccount(UUID.Zero, userID); + UserAccount account = scene.UserAccountService.GetUserAccount(UUID.Zero, new UUID(userID)); isAuthorized = IsAuthorizedForRegion(userID, account.FirstName, account.LastName, account.Email, scene.RegionInfo.RegionName, regionID, out message); } From d627122cdcbff1888b7334a524ed652731ba3766 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Mon, 7 Feb 2011 19:44:55 -0800 Subject: [PATCH 33/62] Mantis #5368 -- exception on WorldMap --- .../Region/CoreModules/World/WorldMap/WorldMapModule.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs index e0f36a2081..10949701d9 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs @@ -764,10 +764,11 @@ namespace OpenSim.Region.CoreModules.World.WorldMap if (!responseMap.ContainsKey(itemtype.ToString())) // remote sim doesnt have the stated region handle { - if (!m_blacklistedregions.ContainsKey(regionhandle)) + m_log.DebugFormat("[WORLD MAP]: Remote sim does not have the stated region. Blacklisting."); + lock (m_blacklistedregions) { - m_log.DebugFormat("[WORLD MAP]: Remote sim does not have the stated region. Blacklisting."); - m_blacklistedregions.Add(regionhandle, Environment.TickCount); + if (!m_blacklistedregions.ContainsKey(regionhandle)) + m_blacklistedregions.Add(regionhandle, Environment.TickCount); } } From 305c755cfbf92b47ccf6823c38d7f9f01a2b03e2 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 07:50:01 -0800 Subject: [PATCH 34/62] XFF header again -- debug. --- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index c3545aa17c..3b2c972f2e 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -200,6 +200,11 @@ namespace OpenSim.Server.Handlers.Simulation // We're behind a proxy Hashtable headers = (Hashtable)request["headers"]; + + // DEBUG + foreach (object o in headers.Keys) + m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); + string xff = "X-Forwarded-For"; if (headers.ContainsKey(xff.ToLower())) xff = xff.ToLower(); From 34bd41d1867656d0c7b9147484f1095e5cbfdb0b Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 11:16:38 -0800 Subject: [PATCH 35/62] Comment previous debug --- OpenSim/Server/Handlers/Simulation/AgentHandlers.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs index 3b2c972f2e..6a23deefb2 100644 --- a/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs +++ b/OpenSim/Server/Handlers/Simulation/AgentHandlers.cs @@ -201,9 +201,9 @@ namespace OpenSim.Server.Handlers.Simulation // We're behind a proxy Hashtable headers = (Hashtable)request["headers"]; - // DEBUG - foreach (object o in headers.Keys) - m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); + //// DEBUG + //foreach (object o in headers.Keys) + // m_log.DebugFormat("XXX {0} = {1}", o.ToString(), (headers[o] == null? "null" : headers[o].ToString())); string xff = "X-Forwarded-For"; if (headers.ContainsKey(xff.ToLower())) From ac7bc78555c1dd51724790032f0711b24bc8c67d Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 12:06:14 -0800 Subject: [PATCH 36/62] Added emergency monitoring of UDP Outgoing packets thread. Just type "emergency-monitoring on/off" --- .../ClientStack/LindenUDP/LLUDPServer.cs | 100 ++++++++++++++++++ OpenSim/Region/Framework/Scenes/Scene.cs | 2 + .../Agent/UDP/Linden/LindenUDPInfoModule.cs | 30 +++++- 3 files changed, 130 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 5ff9aeee8b..72257d28ce 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -27,6 +27,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Net; using System.Net.Sockets; @@ -1053,6 +1054,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Update Timers + if (m_scene.EmergencyMonitoring) + clientPacketHandler = MonitoredClientOutgoingPacketHandler; + // Handle outgoing packets, resends, acknowledgements, and pings for each // client. m_packetSent will be set to true if a packet is sent m_scene.ForEachClient(clientPacketHandler); @@ -1068,6 +1072,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { m_log.Error("[LLUDPSERVER]: OutgoingPacketHandler loop threw an exception: " + ex.Message, ex); } + } Watchdog.RemoveThread(); @@ -1105,6 +1110,101 @@ namespace OpenSim.Region.ClientStack.LindenUDP } } + #region Emergency Monitoring + private Stopwatch watch1 = new Stopwatch(); + private Stopwatch watch2 = new Stopwatch(); + + private float avgProcessingTicks = 0; + private float avgResendUnackedTicks = 0; + private float avgSendAcksTicks = 0; + private float avgSendPingTicks = 0; + private float avgDequeueTicks = 0; + private long nticks = 0; + private long nticksUnack = 0; + private long nticksAck = 0; + private long nticksPing = 0; + + private void MonitoredClientOutgoingPacketHandler(IClientAPI client) + { + nticks++; + watch1.Start(); + try + { + if (client is LLClientView) + { + LLUDPClient udpClient = ((LLClientView)client).UDPClient; + + if (udpClient.IsConnected) + { + if (m_resendUnacked) + { + nticksUnack++; + watch2.Start(); + + ResendUnacked(udpClient); + + watch2.Stop(); + avgResendUnackedTicks = (nticksUnack - 1)/(float)nticksUnack * avgResendUnackedTicks + (watch2.ElapsedTicks / (float)nticksUnack); + watch2.Reset(); + } + + if (m_sendAcks) + { + nticksAck++; + watch2.Start(); + + SendAcks(udpClient); + + watch2.Stop(); + avgSendAcksTicks = (nticksAck - 1) / (float)nticksAck * avgSendAcksTicks + (watch2.ElapsedTicks / (float)nticksAck); + watch2.Reset(); + } + + if (m_sendPing) + { + nticksPing++; + watch2.Start(); + + SendPing(udpClient); + + watch2.Stop(); + avgSendPingTicks = (nticksPing - 1) / (float)nticksPing * avgSendPingTicks + (watch2.ElapsedTicks / (float)nticksPing); + watch2.Reset(); + } + + watch2.Start(); + // Dequeue any outgoing packets that are within the throttle limits + if (udpClient.DequeueOutgoing()) + m_packetSent = true; + watch2.Stop(); + avgDequeueTicks = (nticks - 1) / (float)nticks * avgDequeueTicks + (watch2.ElapsedTicks / (float)nticks); + watch2.Reset(); + + } + else + m_log.WarnFormat("[LLUDPSERVER]: Client is not connected"); + } + } + catch (Exception ex) + { + m_log.Error("[LLUDPSERVER]: OutgoingPacketHandler iteration for " + client.Name + + " threw an exception: " + ex.Message, ex); + } + watch1.Stop(); + avgProcessingTicks = (nticks - 1) / (float)nticks * avgProcessingTicks + (watch1.ElapsedTicks / (float)nticks); + watch1.Reset(); + + // reuse this -- it's every 100ms + if (m_scene.EmergencyMonitoring && nticks % 100 == 0) + { + m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (pack sent? {5})", + avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, m_packetSent); + } + + } + + #endregion + private void ProcessInPacket(object state) { IncomingPacket incomingPacket = (IncomingPacket)state; diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 4fca2610d2..355671cde3 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -64,6 +64,8 @@ namespace OpenSim.Region.Framework.Scenes #region Fields + public bool EmergencyMonitoring = false; + public SynchronizeSceneHandler SynchronizeScene; public SimStatsReporter StatsReporter; public List NorthBorders = new List(); diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 6630edb15e..53cebb2189 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -95,7 +95,15 @@ namespace OpenSim.Region.CoreModules.UDP.Linden "Show throttle settings for each client and for the server overall", "Without the 'full' option, only root agents are shown." + " With the 'full' option child agents are also shown.", - ShowThrottlesReport); + ShowThrottlesReport); + + scene.AddCommand( + this, "emergency-monitoring", + "Go on/off emergency monitoring mode", + "Go on/off emergency monitoring mode", + "Go on/off emergency monitoring mode", + EmergencyMonitoring); + } public void RemoveRegion(Scene scene) @@ -120,7 +128,25 @@ namespace OpenSim.Region.CoreModules.UDP.Linden { MainConsole.Instance.Output(GetThrottlesReport(cmd)); } - + + protected void EmergencyMonitoring(string module, string[] cmd) + { + bool mode = true; + if (cmd.Length == 1 || (cmd.Length > 1 && cmd[1] == "on")) + { + mode = true; + MainConsole.Instance.Output("Emergency Monitoring ON"); + } + else + { + mode = false; + MainConsole.Instance.Output("Emergency Monitoring OFF"); + } + + foreach (Scene s in m_scenes.Values) + s.EmergencyMonitoring = mode; + } + protected string GetColumnEntry(string entry, int maxLength, int columnPadding) { return string.Format( From 82846afe4b2a141421bff136dec9eef553522aa7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 12:37:37 -0800 Subject: [PATCH 37/62] Minor improvement to previous commit. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 72257d28ce..703ef6ad04 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1056,6 +1056,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP if (m_scene.EmergencyMonitoring) clientPacketHandler = MonitoredClientOutgoingPacketHandler; + else + clientPacketHandler = ClientOutgoingPacketHandler; // Handle outgoing packets, resends, acknowledgements, and pings for each // client. m_packetSent will be set to true if a packet is sent @@ -1197,8 +1199,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP // reuse this -- it's every 100ms if (m_scene.EmergencyMonitoring && nticks % 100 == 0) { - m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (pack sent? {5})", - avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, m_packetSent); + m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (TickCountRes: {5})", + avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, TickCountResolution); } } From f431bd20ec18222a69fe1371b6145cf7415fdf9f Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 14:49:50 -0800 Subject: [PATCH 38/62] Minor addition to the previous commit --- .../Region/ClientStack/LindenUDP/LLUDPServer.cs | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 703ef6ad04..bfbe95964b 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1125,6 +1125,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP private long nticksUnack = 0; private long nticksAck = 0; private long nticksPing = 0; + private int npacksSent = 0; + private int npackNotSent = 0; private void MonitoredClientOutgoingPacketHandler(IClientAPI client) { @@ -1177,7 +1179,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP watch2.Start(); // Dequeue any outgoing packets that are within the throttle limits if (udpClient.DequeueOutgoing()) + { m_packetSent = true; + npacksSent++; + } + else + npackNotSent++; + watch2.Stop(); avgDequeueTicks = (nticks - 1) / (float)nticks * avgDequeueTicks + (watch2.ElapsedTicks / (float)nticks); watch2.Reset(); @@ -1196,11 +1204,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP avgProcessingTicks = (nticks - 1) / (float)nticks * avgProcessingTicks + (watch1.ElapsedTicks / (float)nticks); watch1.Reset(); - // reuse this -- it's every 100ms + // reuse this -- it's every ~100ms if (m_scene.EmergencyMonitoring && nticks % 100 == 0) { - m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (TickCountRes: {5})", - avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, TickCountResolution); + m_log.InfoFormat("[LLUDPSERVER]: avg processing ticks: {0} avg unacked: {1} avg acks: {2} avg ping: {3} avg dequeue: {4} (TickCountRes: {5} sent: {6} notsent: {7})", + avgProcessingTicks, avgResendUnackedTicks, avgSendAcksTicks, avgSendPingTicks, avgDequeueTicks, TickCountResolution, npacksSent, npackNotSent); + npackNotSent = npacksSent = 0; } } From 117462cba18fd0f9610d854760b92362b3beea7c Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 17:53:01 -0800 Subject: [PATCH 39/62] Avoid potential race conditions on UseCircuitCode. I artificially made the race condition happen, and got very similar results to those described in mantis #5365 -- no prims/avie sent back. --- .../ClientStack/LindenUDP/LLUDPServer.cs | 51 ++++++++++--------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index bfbe95964b..04fec95e23 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -640,10 +640,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP { object[] array = new object[] { buffer, packet }; - if (m_asyncPacketHandling) - Util.FireAndForget(HandleUseCircuitCode, array); - else - HandleUseCircuitCode(array); + Util.FireAndForget(HandleUseCircuitCode, array); return; } @@ -857,11 +854,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP IPEndPoint remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint; + // Acknowledge the UseCircuitCode packet immediately, even before processing further + // This is so that the client doesn't send another one + SendAckImmediate(remoteEndPoint, packet.Header.Sequence); + // Begin the process of adding the client to the simulator AddNewClient((UseCircuitCodePacket)packet, remoteEndPoint); - - // Acknowledge the UseCircuitCode packet - SendAckImmediate(remoteEndPoint, packet.Header.Sequence); // m_log.DebugFormat( // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", @@ -927,25 +925,32 @@ namespace OpenSim.Region.ClientStack.LindenUDP protected virtual void AddClient(uint circuitCode, UUID agentID, UUID sessionID, IPEndPoint remoteEndPoint, AuthenticateResponse sessionInfo) { - // Create the LLUDPClient - LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); - IClientAPI existingClient; - - if (!m_scene.TryGetClient(agentID, out existingClient)) + // In priciple there shouldn't be more than one thread here, ever. + // But in case that happens, we need to synchronize this piece of code + // because it's too important + lock (this) { - // Create the LLClientView - LLClientView client = new LLClientView(remoteEndPoint, m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); - client.OnLogout += LogoutHandler; + IClientAPI existingClient; - client.DisableFacelights = m_disableFacelights; + if (!m_scene.TryGetClient(agentID, out existingClient)) + { + // Create the LLUDPClient + LLUDPClient udpClient = new LLUDPClient(this, ThrottleRates, m_throttle, circuitCode, agentID, remoteEndPoint, m_defaultRTO, m_maxRTO); + // Create the LLClientView + LLClientView client = new LLClientView(remoteEndPoint, m_scene, this, udpClient, sessionInfo, agentID, sessionID, circuitCode); + client.OnLogout += LogoutHandler; - // Start the IClientAPI - client.Start(); - } - else - { - m_log.WarnFormat("[LLUDPSERVER]: Ignoring a repeated UseCircuitCode from {0} at {1} for circuit {2}", - udpClient.AgentID, remoteEndPoint, circuitCode); + client.DisableFacelights = m_disableFacelights; + + // Start the IClientAPI + client.Start(); + + } + else + { + m_log.WarnFormat("[LLUDPSERVER]: Ignoring a repeated UseCircuitCode from {0} at {1} for circuit {2}", + existingClient.AgentId, remoteEndPoint, circuitCode); + } } } From 585473aade100c3ffeef27e0c8e6b6c8c09d0109 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 20:12:33 -0800 Subject: [PATCH 40/62] Brute-force debug -- mantis #5365 --- .../ClientStack/LindenUDP/LLUDPClient.cs | 18 +++++++++++++++--- .../ClientStack/LindenUDP/LLUDPServer.cs | 5 +++++ 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 65a8fe3ca8..2d58b941b5 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -463,12 +463,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP bool packetSent = false; ThrottleOutPacketTypeFlags emptyCategories = 0; - //string queueDebugOutput = String.Empty; // Serious debug business + string queueDebugOutput = String.Empty; // Serious debug business for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - //queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business + if (i == 4) + queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) { @@ -476,13 +477,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; + if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { + if (i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } + else + if (i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -491,6 +496,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -498,11 +504,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; + if (i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; + if (i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -513,17 +521,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); } } + } if (emptyCategories != 0) BeginFireQueueEmpty(emptyCategories); - //m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business + if (m_udpServer.EmergencyMonitoring) + m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business + return packetSent; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 04fec95e23..922e2bcaba 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1133,6 +1133,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int npacksSent = 0; private int npackNotSent = 0; + public bool EmergencyMonitoring + { + get { return m_scene.EmergencyMonitoring; } + } + private void MonitoredClientOutgoingPacketHandler(IClientAPI client) { nticks++; From ba202ea9b08b1205de343c65fd209b6cca4cb6bc Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Tue, 8 Feb 2011 21:09:10 -0800 Subject: [PATCH 41/62] Don't build strings unless we're in emergency debugging. --- .../Region/ClientStack/LindenUDP/LLUDPClient.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 2d58b941b5..20f0410979 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -468,7 +468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - if (i == 4) + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) @@ -477,17 +477,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; - if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { - if (i == 4) queueDebugOutput += " removed tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } else - if (i == 4) queueDebugOutput += " did not remove tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -496,7 +496,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -504,13 +504,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - if (i == 4) queueDebugOutput += " removed tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; - if (i == 4) queueDebugOutput += " did not remove tokens "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -521,7 +521,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; + if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); From 473fac4dc71858139bd44c1e9ce4fd03d9d1bd91 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:06:20 -0800 Subject: [PATCH 42/62] Detect negative dripAmounts in TokenBuckets. These negatives result from overflown integer operations. Also added Total to the scene throttles in show throttles. --- OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 3 +++ .../OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index bdbd2848c6..dd526830a3 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -207,6 +207,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP int dripAmount = deltaMS * tokensPerMS; + if (dripAmount < 0) + Console.WriteLine("MAY DAY MAY DAY! Drip amount is " + dripAmount + ". This should not happen"); + content = Math.Min(content + dripAmount, maxBurst); lastDrip = now; diff --git a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs index 53cebb2189..dfeecb1bbc 100644 --- a/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs +++ b/OpenSim/Region/OptionalModules/Agent/UDP/Linden/LindenUDPInfoModule.cs @@ -361,7 +361,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden ThrottleRates throttleRates = udpServer.ThrottleRates; report.AppendFormat( "{0,7} {1,8} {2,7} {3,7} {4,7} {5,7} {6,9} {7,7}", - "n/a", + (throttleRates.Total * 8) / 1000, (throttleRates.ResendLimit * 8) / 1000, (throttleRates.LandLimit * 8) / 1000, (throttleRates.WindLimit * 8) / 1000, From 477a869fb2cc615430d78cbad6a5a0eedf6b9bf8 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:08:57 -0800 Subject: [PATCH 43/62] More detection of negatives. --- OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index dd526830a3..de8b521b67 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -213,6 +213,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP content = Math.Min(content + dripAmount, maxBurst); lastDrip = now; + if (content < 0) + Console.WriteLine("MAY DAY MAY DAY! Content is " + content + ". This should not happen"); + return true; } } From 1bba9c6300db10c78f606bf0c21be17004dde704 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:35:21 -0800 Subject: [PATCH 44/62] Revert "Don't build strings unless we're in emergency debugging." This reverts commit ba202ea9b08b1205de343c65fd209b6cca4cb6bc. --- .../Region/ClientStack/LindenUDP/LLUDPClient.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 20f0410979..2d58b941b5 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -468,7 +468,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - if (m_udpServer.EmergencyMonitoring && i == 4) + if (i == 4) queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) @@ -477,17 +477,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; + if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; + if (i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } else - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; + if (i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -496,7 +496,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -504,13 +504,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " removed tokens "; + if (i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += " did not remove tokens "; + if (i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -521,7 +521,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - if (m_udpServer.EmergencyMonitoring && i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; + if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); From 830fee145d8e8fabc32365ee6f04732d4c85b1e3 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 08:35:36 -0800 Subject: [PATCH 45/62] Revert "Brute-force debug -- mantis #5365" This reverts commit 585473aade100c3ffeef27e0c8e6b6c8c09d0109. --- .../ClientStack/LindenUDP/LLUDPClient.cs | 18 +++--------------- .../ClientStack/LindenUDP/LLUDPServer.cs | 5 ----- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs index 2d58b941b5..65a8fe3ca8 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPClient.cs @@ -463,13 +463,12 @@ namespace OpenSim.Region.ClientStack.LindenUDP bool packetSent = false; ThrottleOutPacketTypeFlags emptyCategories = 0; - string queueDebugOutput = String.Empty; // Serious debug business + //string queueDebugOutput = String.Empty; // Serious debug business for (int i = 0; i < THROTTLE_CATEGORY_COUNT; i++) { bucket = m_throttleCategories[i]; - if (i == 4) - queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business + //queueDebugOutput += m_packetOutboxes[i].Count + " "; // Serious debug business if (m_nextPackets[i] != null) { @@ -477,17 +476,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP // leaving a dequeued packet still waiting to be sent out. Try to // send it again OutgoingPacket nextPacket = m_nextPackets[i]; - if (i == 4) queueDebugOutput += "m_nextPackets[i] != null, " + nextPacket.Buffer.DataLength; if (bucket.RemoveTokens(nextPacket.Buffer.DataLength)) { - if (i == 4) queueDebugOutput += " removed tokens "; // Send the packet m_udpServer.SendPacketFinal(nextPacket); m_nextPackets[i] = null; packetSent = true; } - else - if (i == 4) queueDebugOutput += " did not remove tokens "; } else { @@ -496,7 +491,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP queue = m_packetOutboxes[i]; if (queue.Dequeue(out packet)) { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq ok " + packet.Buffer.DataLength; // A packet was pulled off the queue. See if we have // enough tokens in the bucket to send it out if (bucket.RemoveTokens(packet.Buffer.DataLength)) @@ -504,13 +498,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Send the packet m_udpServer.SendPacketFinal(packet); packetSent = true; - if (i == 4) queueDebugOutput += " removed tokens "; } else { // Save the dequeued packet for the next iteration m_nextPackets[i] = packet; - if (i == 4) queueDebugOutput += " did not remove tokens "; } // If the queue is empty after this dequeue, fire the queue @@ -521,21 +513,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP } else { - if (i == 4) queueDebugOutput += "m_nextPackets[i] == null, dq nok "; // No packets in this queue. Fire the queue empty callback // if it has not been called recently emptyCategories |= CategoryToFlag(i); } } - } if (emptyCategories != 0) BeginFireQueueEmpty(emptyCategories); - if (m_udpServer.EmergencyMonitoring) - m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business - + //m_log.Info("[LLUDPCLIENT]: Queues: " + queueDebugOutput); // Serious debug business return packetSent; } diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 922e2bcaba..04fec95e23 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1133,11 +1133,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP private int npacksSent = 0; private int npackNotSent = 0; - public bool EmergencyMonitoring - { - get { return m_scene.EmergencyMonitoring; } - } - private void MonitoredClientOutgoingPacketHandler(IClientAPI client) { nticks++; From 1cd951e5aedad4be809fc2674e57e34d0972b67c Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 09:39:53 -0800 Subject: [PATCH 46/62] Fix the negative number problem in TokenBucket. mantis #5365 --- OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs index de8b521b67..0a8331f32a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/TokenBucket.cs @@ -207,14 +207,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP int dripAmount = deltaMS * tokensPerMS; - if (dripAmount < 0) - Console.WriteLine("MAY DAY MAY DAY! Drip amount is " + dripAmount + ". This should not happen"); - content = Math.Min(content + dripAmount, maxBurst); lastDrip = now; - if (content < 0) - Console.WriteLine("MAY DAY MAY DAY! Content is " + content + ". This should not happen"); + if (dripAmount < 0 || content < 0) + // sim has been idle for too long, integer has overflown + // previous calculation is meaningless, let's put it at correct max + content = maxBurst; return true; } From f33e51e2ffd475ccdbc69429b4b4d707e88cc050 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 09:50:26 -0800 Subject: [PATCH 47/62] Comment instrumentation out. Not needed anymore. Left in comments, in case it is needed again. Mantis #5365 --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 04fec95e23..207d21332c 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -1059,10 +1059,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP #endregion Update Timers - if (m_scene.EmergencyMonitoring) - clientPacketHandler = MonitoredClientOutgoingPacketHandler; - else - clientPacketHandler = ClientOutgoingPacketHandler; + // Use this for emergency monitoring -- bug hunting + //if (m_scene.EmergencyMonitoring) + // clientPacketHandler = MonitoredClientOutgoingPacketHandler; + //else + // clientPacketHandler = ClientOutgoingPacketHandler; // Handle outgoing packets, resends, acknowledgements, and pings for each // client. m_packetSent will be set to true if a packet is sent @@ -1118,6 +1119,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP } #region Emergency Monitoring + // Alternative packet handler fuull of instrumentation + // Handy for hunting bugs private Stopwatch watch1 = new Stopwatch(); private Stopwatch watch2 = new Stopwatch(); From 21715396fa0d87bd4936bd37151487346794806d Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Wed, 9 Feb 2011 17:45:19 -0800 Subject: [PATCH 48/62] Put the Ack of UseCircuitCode back to where it used to be. Some ppl are reporting login issues. --- OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs index 207d21332c..584c57719a 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLUDPServer.cs @@ -854,14 +854,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP IPEndPoint remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint; - // Acknowledge the UseCircuitCode packet immediately, even before processing further - // This is so that the client doesn't send another one - SendAckImmediate(remoteEndPoint, packet.Header.Sequence); - // Begin the process of adding the client to the simulator AddNewClient((UseCircuitCodePacket)packet, remoteEndPoint); - -// m_log.DebugFormat( + + // Send ack + SendAckImmediate(remoteEndPoint, packet.Header.Sequence); + + // m_log.DebugFormat( // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); } From 89bb5c0941625542ce3fe364cf91a2e2fa60cbcf Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 10 Feb 2011 06:09:04 -0800 Subject: [PATCH 49/62] Revert "Hunting down mantis #5365" This reverts commit ebeef02fef1a04b5b4cfe13dad588bcce7f9ba21. --- .../LindenUDP/UnackedPacketCollection.cs | 45 +++++++------------ 1 file changed, 15 insertions(+), 30 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index d762bef134..9d40688ac6 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -141,46 +141,31 @@ namespace OpenSim.Region.ClientStack.LindenUDP private void ProcessQueues() { // Process all the pending adds - OutgoingPacket pendingAdd; - if (m_pendingAdds != null) - { - while (m_pendingAdds.TryDequeue(out pendingAdd)) - { - if (pendingAdd != null && m_packets != null) - { - m_packets[pendingAdd.SequenceNumber] = pendingAdd; - } - } - } + while (m_pendingAdds.TryDequeue(out pendingAdd)) + m_packets[pendingAdd.SequenceNumber] = pendingAdd; // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; OutgoingPacket ackedPacket; - if (m_pendingRemoves != null) + while (m_pendingRemoves.TryDequeue(out pendingRemove)) { - while (m_pendingRemoves.TryDequeue(out pendingRemove)) + if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) { - if (m_pendingRemoves != null && m_packets != null) + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) { - if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) - { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) - { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); - } - } + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); } } } } } -} +} \ No newline at end of file From 45382e6f828395cbbcc1324d366c4f3e0eff7ad7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Thu, 10 Feb 2011 06:26:26 -0800 Subject: [PATCH 50/62] Reinstated a couple of null checks related to the previous revert. --- .../LindenUDP/UnackedPacketCollection.cs | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs index 9d40688ac6..d195110a23 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/UnackedPacketCollection.cs @@ -143,7 +143,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP // Process all the pending adds OutgoingPacket pendingAdd; while (m_pendingAdds.TryDequeue(out pendingAdd)) - m_packets[pendingAdd.SequenceNumber] = pendingAdd; + if (pendingAdd != null) + m_packets[pendingAdd.SequenceNumber] = pendingAdd; // Process all the pending removes, including updating statistics and round-trip times PendingAck pendingRemove; @@ -152,17 +153,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP { if (m_packets.TryGetValue(pendingRemove.SequenceNumber, out ackedPacket)) { - m_packets.Remove(pendingRemove.SequenceNumber); - - // Update stats - Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); - - if (!pendingRemove.FromResend) + if (ackedPacket != null) { - // Calculate the round-trip time for this packet and its ACK - int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; - if (rtt > 0) - ackedPacket.Client.UpdateRoundTrip(rtt); + m_packets.Remove(pendingRemove.SequenceNumber); + + // Update stats + Interlocked.Add(ref ackedPacket.Client.UnackedBytes, -ackedPacket.Buffer.DataLength); + + if (!pendingRemove.FromResend) + { + // Calculate the round-trip time for this packet and its ACK + int rtt = pendingRemove.RemoveTime - ackedPacket.TickCount; + if (rtt > 0) + ackedPacket.Client.UpdateRoundTrip(rtt); + } } } } From 8fd58aa00c092da188a67573d4aa87c363f44eff Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 22:09:46 +0000 Subject: [PATCH 51/62] add estate name to show regions console command --- OpenSim/Region/Application/OpenSim.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/Application/OpenSim.cs b/OpenSim/Region/Application/OpenSim.cs index bd1aa468ed..408188824d 100644 --- a/OpenSim/Region/Application/OpenSim.cs +++ b/OpenSim/Region/Application/OpenSim.cs @@ -1030,11 +1030,12 @@ namespace OpenSim delegate(Scene scene) { MainConsole.Instance.Output(String.Format( - "Region Name: {0}, Region XLoc: {1}, Region YLoc: {2}, Region Port: {3}", + "Region Name: {0}, Region XLoc: {1}, Region YLoc: {2}, Region Port: {3}, Estate Name: {4}", scene.RegionInfo.RegionName, scene.RegionInfo.RegionLocX, scene.RegionInfo.RegionLocY, - scene.RegionInfo.InternalEndPoint.Port)); + scene.RegionInfo.InternalEndPoint.Port, + scene.RegionInfo.EstateSettings.EstateName)); }); break; From 98af0db8c0b38c385bc0136bac5b3b213f8c699c Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 22:16:53 +0000 Subject: [PATCH 52/62] minor: Add some more information to the mesh_sculpted_prim [PHYSICS] setting --- bin/OpenSim.ini.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example index 7245bee2e3..5bac56e66a 100644 --- a/bin/OpenSim.ini.example +++ b/bin/OpenSim.ini.example @@ -306,6 +306,9 @@ [ODEPhysicsSettings] ;# {mesh_sculpted_prim} {[Startup]physics:OpenDynamicsEngine} {Mesh sculpties so they collide as they look?} {true false} true ;; Do we want to mesh sculpted prim to collide like they look? + ;; If you are seeing sculpt texture decode problems + ;; (messages such as "Decoded image with unhandled number of components: 0 shortly followed by a physcs exception") + ;; then you might want to try setting this to false. ; mesh_sculpted_prim = true ;# {use_NINJA_physics_joints} {[Startup]physics:OpenDynamicsEngine} {Use jointed (NINJA) physics?} {true false} false From 754c244f468a038be2417ed611e5bf3fb962a987 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 23:06:14 +0000 Subject: [PATCH 53/62] In SQLiteSimulationData.RemoveLandObject(), don't manually remove the row from the data adaptor's Rows list in addition to calling Delete. This matches the behaviour for other deletions and stops this operation failing on Windows .NET (though mono is fine with the duplication). Probably a holdover from copying code from the older legacy adaptor. Resolves http://opensimulator.org/mantis/view.php?id=5361 --- OpenSim/Data/SQLite/SQLiteSimulationData.cs | 6 ------ bin/sqlite3.dll | Bin 505771 -> 559244 bytes 2 files changed, 6 deletions(-) diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs index 8d93354391..377c680d70 100644 --- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs +++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs @@ -669,10 +669,6 @@ namespace OpenSim.Data.SQLite } } - /// - /// - /// - /// public void RemoveLandObject(UUID globalID) { lock (ds) @@ -698,7 +694,6 @@ namespace OpenSim.Data.SQLite if (landRow != null) { landRow.Delete(); - land.Rows.Remove(landRow); } List rowsToDelete = new List(); foreach (DataRow rowToCheck in landaccesslist.Rows) @@ -709,7 +704,6 @@ namespace OpenSim.Data.SQLite for (int iter = 0; iter < rowsToDelete.Count; iter++) { rowsToDelete[iter].Delete(); - landaccesslist.Rows.Remove(rowsToDelete[iter]); } } Commit(); diff --git a/bin/sqlite3.dll b/bin/sqlite3.dll index 558a015a7f83e96d3589f5cbb878736f919ac541..f29dc625fae5afb09cd52653920c967b26fd15e1 100755 GIT binary patch literal 559244 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

0_~1A*iBbE;~Vt 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

ZGCQ@ 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 z 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

K<3PxM1DJte}BV#lxyn@ru4{nSPwWt-oU+r zI)#kfZ5-GXXUpvbQ>Er0-H<&}4a%Vx+r7F<@U9ACCmJsDVpa$E;~<1h=|?%el_R$p z5(9F?UUo|Eu1aX2cf5gaaWv0Dwzl`seY>j%P^v2&^k^#Z`bL#`0pcsrE!Q1d7V#r> zmqKmvg|k5!A*xlbPY3B;i~aYA6xR1thAelM*;Y-6(!C3dsmas3PzfmdYLxbc8D{jr zVFPC8f7*WYGxVlcD#^yDIa>D$pH2@7Wpr#1dtbeydQZ!(_APPU?3{V*7r!?S9)M^r z&dwECCsaV8{jC~@T_I{Y&4ssFS7Pd_?k^hc|6;GHzTx%6Sfi1g_v^oh5w7C_3O3x`gb>>uNw?T&j)g?Zr>s`6-)UA!D{;1q;PIe8I34Y{Lp z;`%dizmr2qhrv&U_T`sP_S1%HgP$x^pQC8RN6{3OQXhbMJ8rM2eg|}QIH-z1W5OHM zm!ge`CWbj&9o(j747t6@j*@#L(jp<_16?RQdxXooI3)M}E#>HqTdn22i%S&%7njMG z%+lggc$8QE913nRI6s(LTn;CsGBOfKiUhtVwYV(22ThI3D{m@Yw?JM{=DV;E{@yQV zH@!pxKGp%}RV#z19JN1<1+Hd6jF)HDgG0hMmB#PEBj$Ps<7?;vF~7{*j=Z+Wv-xs! zkAPI7>OWI8>rWM;BT;L3H`+L?N>TOtq;yz43o%KE>NoA?yD~D0=6qxfWsvv`{Op>Z z1wLH?RE@KNSK`3<_T{VbdAznG7Q+2;T#OXO!7rW_%o(DGw668?3mpvZQ=VRv-SuHN zAvT{5VR+g8=~uuXi|%K~3gqI>Ll*T(eNhlXlfC~g*!nDoM|`15!aHRke_39O3yCgc z)yk@Ae>q{mj*o;kJu!DY{$!5=0+q+du%h3z;T5GY9ar))MH&yi?*Ir;4PsQqU~Iw*** zN9fn=y!K^oPQQEV1-gYPB0w!V1HSclVVG`HiuJzy)d!bd#OF*tC-E60nXwBWqMOl+ zkO7o02|+ui2{5Njg5OSQ0-M+*6xtglLGYoz;j>rCvykUv6cQ8Wm)H>+$p>9O<05dz z{2pB&IS!)s6)!44a!_*>A&D!zh*gBH<}z){e19{Pz9TER^S0YMR>WL*P?`e5N+;st z_HQztCi_K*LwZ1!XPJhY?BBiMCb7+d4J<?>6bnSDW=as@;ERyEo+8Mf%Sc8R3Zh>22o7*%5<4T@jm}2|-_H+w)$- z_udIT`gT+gq-);exc0Mv!Px6tzm(m5X*Lj$4#am_E>C$b7tT&#q zNpd5!%+2D@QRZ*{JYgHyJ70AM7oVA0bRpas=zp`Fgs;A*5Y}=2=3h;aO8pq1bp4wz zyqciwj`{0R=AEIC2_hf5_L|T{b7yQD$Ni%p<9*k>@#y#6^#AL9iC1yn(JyP_G0Z@Z z(SFXn^r-&l(&+%ge-q#P*zb$^Xy`p%Fy_{k6LCjj>K-|V2wKcrS zwL#R!`4i?H-=+u0iEZg4l?e8+Z=B=&Mqc;C+44I?)~X`=gDW|J1SNt9Pf(I^&;+zl zTdNlPKED(WvQG)m_6EDK#f~9bF&q0-Zc`+CUzg-IH#z2p`3iLZM!PW9UMMA6?FY`C zKpgKhdEgt_^sV-XznP=O0^N^0nO?=3*u757yf2q2Xra|U@{Qb^@jK)!%~KTAYQHui zL!;Aq+XbPt+B+v?R520lhkio`+k5z{_I|DQ;+MvaQ_E$lJWlqh3> z>isiVp6HKLRxzPDYLRu_*37-K^X*XVw9dDu;rEu# z3H=xsVi4bQw;TF^Yk|o7$G9Xn*{{Gak|q%E=5+1_Cvs$^ic|UM_=)xCA?j3fTQHw; zwUCD%PSp^Q#JM5_y8o9FK)kVorJ4Mt;(k&HMOA)U4WPI#q(XwbMf^%fm1mVl3qqFhu#}5XUjSs=< z$*%F+uf8N@_=n)A<2Y&E@r?jc5S;^(uwn}d_|F` zr%tt+b-tDFnp4{zpeJVb#iXUp-_&ZR-c%guzLKuW)Wfjtm!b%YZq%>6@+9Y&Ff)#~ zAk>8YOrTpBc!KLt;cBtVoaF#_!T}nBR5@gP`sC)0+zY5?@b*D@VS=M5mhjYnaQHqU0`S6hX>f%Qu6T@TuJ?oib)(9P*`-xxzE)M7_@mU&uQfd%T^ zeU%@pNSv#3I2i{V=L7j|eO5`Hw0&b<(A(CR6iHm+rZ)g8U6;%XWFxv!WLJo3r0fup zxD)}U{i44Dh`@su3KjMzJJE?xLy5p*^6-P`9{M~h z_|Es{dzR~Wp65oseK0OQ7FpQn`PenrdKP|ck>{F5bDmTwK0!%(KsbZV!N0E(ULJeGbL1O=?w{&wL!yIV^}@gH+%Ux(zYOcpi{cgAY6_|@ z+B~-^yye5N%PHY`R?v<3VQ3yo`#z^#D+;6+)%3wpUcAj0@by(qTlZV^DYuoNDTJ;0 z?x?*CA+PE9tj>4NiB0c(r!+RL^PM>{U)RAnQt**g74~Wo1n-iIvGQcFb^r0gDX7B7 zhpe?|jByhKqUSUZ-fLvjs^>szKA5O#&%sz(GcLIR7TYm*V5)6%})XDZhe zCZefo6#SmFBK=nHxJmq5FQl)}hTDcWzr<2?R?S)vf1aJt#OCO4u&+kp$;{<{T1Zsm z{yCz$I*`6G-)psj%VEnDQ?jTb6(5-cv%!cSy&@8I+|Yd#1~!Gf7rROQ?ww&JzUF>UdHgM_wV~n+sXTsQrBhEyC>LF zO$ooXA;>Rlabadk4-Hxs)=hrv9wSG>9N66L&H0K=nKO06W(F1bbcfg+yXpZMU0{{+ z=dhDfV1muj{6)5W*euaQ!lLHjR7t|6jENhMjA7p=;5rJZ`#`^?K!7Z*C1tk^JThasYMS{wXL^_Y^QCQ1(zKkyDXXY!VHu; z@!&O_3>U;_Nt+*1OuB?#i409-b;5oBcRJv@0a9}fEp?8lk;b46fE4sFfsj!vTByDe zby+79N&!E-v}+u81!+76sE7ZGmZ* z#4GToDi-$(VY{EDshN*D{X0qeCsK2UmnoBZL^EImljoP;)o?KVp7>irxEOuNNHNmo z3(&AHk+wGpx5JZPdE~alj7MjJ6OlKSY9Me?-nXLo{Fv zD6@Tr!mD;O1UI0Feq#M=M5IDr8fCI^-c}(~C~mk#B8${V+7Ld>fZ0*{RAQfUlb%UU z_DTF0=QU2CX`j3?M_`T9wE54!m!@_3p}Uv94X4w^2RcJrgIkw)A^7OB2T_9g;;JG~ z+(U$#HvLw-09X?LuTD!#H`fL2FVX4VIxX5;r!Qva$of`-kv*|lsan72(NH*Qi)NgF zy4=S^zYWbIB@SQet<#1l=vfL9qJI(#wfn^_ryR8^4Ov1k&FT?fnE7*e2cDTScX!>D zl>76i#HwP8cmd4e8{zpv|B6PKa7nm;721CQs=!gsZ9&E-ts!)8E6fCl#Yh0G{JA>` zj6Qc~t<`sB_l_+?;&Ppu_c}iGT3dus0}nqDtgJ7JpEMy3Dfm<{gY>|G$wVQs8@Cq? z!3-+c{&+?Ld+D5-^hG9pD3{LARd6rx+u}nB;0$Yq=makG@t4W;S%sN=>#9Oz2bt3Z z;d%}J&Bte8??RnPakE4qJ5T`Ljm;A}8)y*Ci{{bni{g~fzvS#bwOGb%Xe{m9 zg#h3z-Ud-yue0}lInEK*eXH=r!P+36PC<1=yn@qOG2NzV$RpJ`5gw$2%T(tE_D7Ii zlzl}Y3CTUg-t?Z-8Oc9;*NR}})p6xr7eAQ&Bdq!+ncJyc^YY}p%9m&a63T1}@_D^q z$>EwV+7-UR7cU^Y#+N+-8UB{3y)`<=?}hIk!>FUf@TvKY*+)8>#W8`^r`_9PZbAP} z*5o^-!4Z8HMvsERk5~}qxTTdFB+ASo_7(FRZ6VUpe}SLftz-5o zs|Da42$7CO-vzHglU39SajPOX$V?ossF081=n#W zX2MBsu@QO6HU<(uBo#J~A|zu|qcYB&k36LttPO0u(Lq>;9`I_QODIzbSD~7js|s6G z@765Z88`&PC~XspSEE>|wAfc`N2Gxn4rZ`M2R}mvtRbC+*+OIr_iSa&M>FvrU5y$M z#*GM zFZrPC5f1H^pg?hpeLd?3S#uQp%FbHlvrAgR$im zB!?@8#Lo(FKuBroE3x;tnEK*QjFblEz}n~&xum17o;d?g7)29Ltt$w_Aa+XD4TZfm z2A3Nx-rgEHnox9CDX1QxW`m65Diha_wnb9#FV{Io&^CTJk`j-XYo_xtzs%n}uYo;y zZ_S0<^05CG_`NXj%#Oe_ori{zK8$)dpM`JHjT{RyIF%!b^qF-o&;!)!*JI9sVeWC; zyi_AG1xtIho*u2|ZSQ7W6^^7Af)p%ZTkXyj=gtAR-F>b+z>K$+lGrdR;t??TODA#5 z#EBVx6HQ*-q&(x6dO|-Y)pPTtvRcn|ZaqeSXHpwgZl2i37%~go1 z_RkST3%4>ir<_dASYDr0R{L`%U&A z*~u*LiQ8(u75O@>;hf}l0?!DA5tsq2(@%3d|0CP-tJcRZs@f2{pz7|Jph5L{@jtl& zg0|ANc~SdbZA1G!Ub&e!#jD6=x%qKbsxL~NrSkRK>TN+hh6ESPijCj^AtvB(E^C3E zqwpY`vMYW(5)f#$)w)cM#K@VCHjPpcdXy z-?|qstfB0P^}-(CT&T$+t5AuWjt)-;`XNM{>R7STvx0C^d~UyECEuRqu@wY)^$~ha1J67@vQ7Szh9V_lwv2LY@=&<^G zb^JE{mKRsXv=q@SSL*MTbeG6ivE{cgrghR?dL#A3R+6$>lHJ!mbmWtalfUvu+Ljlk zsGJYucL2_|Hh;SIpUKe~f%|^LJ!I~_XHi1&FvsUH$3=6^LQRo{^7o``9;-SnaNmDY zZtJxd9a?w|laC1CEne{KiM-=UFS_)9;Nf&ubi~njXx}jcgL^lB(kOS^pK+lw{t@!_ zO5XGQX|>noGD_T+s$HodANc0$$0*cAMH3}lR3$^qk}LTQJy zoLAp+xn4w)h0g)K)I6}KI=h00&WgJ=ZawOE@mwi%76$fsR`PdSwb%C;=R$IHR^Yzx zaF<8=efTY0vd5~5(&-3{EOYDikH7bo+#AhZR>umt238ZZ1QwzKBsxNnmhqtPu0p;Y|9B%D`KY)?x#;Z?3xW# z9f7XLc^DM7E%?k-@Cfg=KkBv}a_bLte?B)B#S8zYZFt=L_=X8xe?syyODEU)A0%eP z4r@X?KXTjIjuN(^TFOnfw(*qKb4uzjF1 z%Z;j-^gy)D+n@X!ORaOd%Uy?ZIEfDI%6T-Q$X;0sJ2;;I%H;h2CVwzVT2JSKxaj%O zHAtp!V!mK1G@e}}19^iI*NZh}Furt^H*jBia!oHd3!Di{|34YOE7RCBp(DR```YD> zI)2TB>{qp)?Itht5!&fo&=LPIb9iU`yv%fcUJ>8O^Ge0|=^C!QUbmMqACrgbIS0au zIO69K4ur$%Yl7L0ou>YXp^&(q1{;Z9x}0VP@1y&a+BVqF!L7a-a;i&* zJ@G-8|Hq}t`A6U6pZoaUZ_WKb@*Q0{y~o2lfN8;Xy|yr1>kp*=Kn2`oYyFv7%q`#I zO{>Xo^;OmuCQgGN6L`iK?AozudUEul&4)U-U-j;T#1MQ1Ws}N#3KR29fm6l*+xx%! zzw+)h=UrmB)cV7to7=5DbKb4&DBk>`bX^gu-dyQLL&Z*C?TR&=d#u=p;)+zb6dgq^ zu$sImR9w!=rD_q2`o&37kySyZV&b2NLsIp4l&zJ!^bFo*Ac6bO;98|ZGFR2adQ)cZ zT5g+Nd>-Xf0$H`6(LonNp7(kVWrh9bYVn0)cduCyA{v!Cn#T9^C+@g&{T-xIBUyqxLy|QKv&$ZUiO%h61A)7c!48`^K_B4{{qMt9kLIlDgh! zKTEPCA%j68iOOR86wgD;GV>XiQ{s9`h*2Uo@dv3-+p41umYN#jCFtQyxAaNq9tz@4+V%eZ2)a-!ra zp{DGcma}#OYQkl3e2m}2gfm8*`%Gj3!G%peGI-)v5b8(Zt6G4{wHdTo8)S8p1bLA$JUV07E1c5I zV(s71Vrno_yWvKA6Od-+>~1SEEE1p+WW9%dRs!MMc>n6@AJ4`;bYKzSby6UL(4j^+udpw7O9KaE6|7VHgL%OIS#HP4fTu*dZmjP{l+7hlIr}U8 zR#|W6+#YJgCcj*Zp;X^W|dwqdM@{yA6eo$VBMBy1}?_yExjv9jpL_5deWF-`=H^zM#U=r!w zT$9@D8~1yE#oQOe&nH?q7l_pBgUh#RCgI-pEGqVSYr@ZO8q8GE9&He>3rb#jCYg(r z`9XTR!$(%DU2V3-58(U}W+=P0=n_;&w`@Knywc)vj=jOVE}wKN^&N*#`uIYI1K;)k z7e47HY8^i5&HOl)-390KyvZl@pJZdeqs?-{)%xXFma|e0-XHsdFqy?Cr`hMfA)ig3 z@%6l4+5K+Wn3P2eKkz^|)myz6Bt|RmDc*cedhx`w*bCq?^V1BNuZB-tTQv90@Vkj~ zF$2!8AM4===FHkQ!!StlVUTdFY%Q9yurB;A_KLX!I>-SnVrKM#k9|<%pHR=~(^>Fi zoYNz|hn9V};Gt#D@mVzGp=GQ2xaaiNsSj~ZTW>CkTphVKay;v+wRf&36p2`09ZS*F zvB*Lz#|f@f>ZF+1D95qt(t6Ln^zu2LtJ$?wGWA{&oo9oTxWzK)csLJUdb4E;^@u)v#p`*k7l!bC}e#$}`;AbN2 zz0VYfu4!C^`h3mx67?svu&MSv)BXQ(`?>baDldvO)oR3{W40~JoLisx9kJ5$-?J3Q zf*WUL({iD9EhcZd)4X365(w1Bk6G7y#(#``^geU>o>vu0kNv)ZAZPoyL8NLT*S1C? z9}8U`LcdSYjhHDM1Ag4FZ7w*UyYU!s<8F~-wC~~pr+I^@-VeVuMxs|Qtc^_CV7Us$ zA^3fJ;H;m9gPI7CxjH78xE>3IIPaUFPZKLJRu<;%mA776e(dS*IadG8t4`<3%fJQJ zn@@5c4D*>^_|UQ_pHK4H%I9%DeSCt`9$L1B&y#$DCs2k@pM0PA(6SyreSCs`p853f z>EjbTiDy1Ne3X9M1ihVZ{)+Vq9wDFEPU_fGA}KxcbzB~_`CXrVv+>zyMIIG9j9zk) zInRuX-URems;1bx1INtxcnu3ZA}9EZ=;+o5d-YzVNABQnd23JJ<*KM!yk}93*Q10| z<-+1EGkMIG?eW!Ij`Qt8Qa1k?m2*r-i|`?lYJNBqQ2GkZT`XUVvUdgX<7Y2v9w+4- zKPAF%7gO#>F;tanp6G*rU>2JAq9~{I*-sWg#77>LySDEO^izF)EhH-&f7H&KCiY%f z8`1wa;}<|17{4mCTa=yusq}ST?gx+B2d6q_U{*iHeBpOC!StX?EZ7nAz1L5o-l3T# zm2cy%&bdh&n{zxgtQV4gr!=}ReswZ?ay)>KGB1kC_JdO#ODDQFW`E%w;-N~pFpFlv~l3K#YdU1Cf^a%jf}-_{Ve(#J0zp^y1$@#WIx z#ZD-%sZ#&Ayy!zvgJ$S&>it}6dQ5AQ^^?l#scf9SC;mM5#8oFrH5btbS9Yv(Ze*aW z3mSk-#aYn&*piO4i_phj`O$Ik@f!%;MmjpjwS~9xBi&SrIkC}`%Un&rQ~AjqC#IST z!+o1CwO;ljy2aSHlq=acfhqS&hV8R3M4}a_W+PN{J?_opeXFA|U0Z6^avNY-gy_XJ zTz-BnOw$?LfPh{3vn&+He0xw|x6V3B&!S4iuDU4P8^ypDk8J4kHuqbo`{HfBErg<< zh07vnZY(&)RPzPl?{IiYP(*@6pe~Bt%3Tj1g|Pajn_m}1gJ&!$%5rrXYd|#%=`hoD0l2|K^0eD`GSr?tyTql+3-1Ngo7bEP8$8+PiX)~xw3|LEwt?NqO z(+z2NQ?erA~cfQsIm0$Qzt^E_ zTg*J@bRiC8M3;j|%ftmxROPZX9U1=BvL+JWZ$PJEX(*+hMOS5k$fnd{v6OMR7J=@o zK!j9_%O)-*k^VtpRSHZ+hASfjo2D4I|HLd}VGgN&R^%}Hcjya`3I-h%FCYvp+L-?G z6Z~wlPdq3C01yOiyoloKy^l(f9YYu7T@X2J>67XV6J%V1n6L*VK(;t%iR=}Bu+h}L zU*V0^Lyz-UW(7?}!m69AdaO*nr-;LkCi}V9SafYDybHx#anN+vM*#20r~tU2BMB^i zb?O1_!A|&?@D~o}=XrNpCP}h|6*ti|NW4LdS}8jka}ZSLWTs#eOtRBhtfn_qI3Q~> zI`>7fGR z@n?u(JgLRS9G1Atxn6t{hzbZhTl|2YFbtkFn=dx2C0+Y&6#tpxkY5&gN4!i*)>HBk zJN6eTNkyEo-l9**BJA6)~#xHucT z*KhxZCZt|GU0g|W_M`SMaw+1e5;a(#y*-x{D>Q76M)*s_Wz{+iCjYL7X226Wk>n{P`$=ZY>d~3Alhb*`4Tl5} z*-dFU`GQbZO=V#k?0<)o?+n!lDV;I?hBHg&^49o`$`)e5D>oExxdv*0`5MKm+L#?B zxZ+rEyO4!1$}PM^(Wbi1|LHV${*X**=4^#6srob$ zpq;GKGBa~&1(JrjLh&TpU>r{79(0aq{2Bf_CpEgA)on5BI`Gfj8vgTd@-u|T8KdZ^ z;WrDVx3ca|uRfpANdS<~Nxl=<`~8g$g_c22E%|JZtgHA6#bstu`%}g6L{GemGy6Wt zpo4VD;RSx3gtXR%KZus5_McNW`x7aKdayv}H#6E~}h3zj3!z2r-bZI$d~>Vu+-UY0xh=ZuETRaM#qRs~BpI zlDKL`|KDhPyL-a5{muSR`{Ua%mhDZ-Px&`NuTR%Ej?rW_gDyxdErlDmJAdgS@Z0oM zU0HrzX?SDg;)tF62$N%$Dp_%WUJk#PA8_yyzBzHRI6pg=w|-eag5KRRc(L>+}(? z({j9I1NY0E!0_wd7kI$pXS(P#XV|;eZ%X^Zm338{XIs5qz?nU_uEKtv**75K_FGZ2ajEBN`Saq9-&$#>b$$Gmigk(6zXsh{RwLatfkexbxUZ_lls`AiH%O} z+;n1=cqkhGE*E#tEUtsQowXfJ*G7>lR@<}SsOQ&KTeVBZ?IX;(>K$Y066;kJ>ENe8 z;&>t7k=S6hsNS7q1+4xH>Xxv@mcYHNTa;f{9p1fmn$xw6NIQgTXtKYzMP|`jic0#Z zw+;e=fc4k9KeUeoKyLOT&>>1b2hCq{;H zx0~MIzmqi~3*|E0Ln+7}h^l5AYpRAu`;rF~vtW?;k~R8>cjt_kaCO^YhfK2I;)Uf7 zUfe`g?)5JrH2!tCclBo$V6d64`5@Be^OL*I!OJTl(B1;c>;-A3s>`j&)A;F6UmHYo zY_DV`o|ZsSyS>SmWx`W6MbJRA;{}yB1lQwy1Z$qdiqh2Z^C{GZq{&eCzSzT%SDdxp zpv5im;fem%6z;$Q=O^zGKR(jkjtV<|0lvv=uS+$t<$}4LeG{n$)i>Eq{8q?x;G|06 zM1@00w?(jRu4Bz564w@Mt@;ti3e)PJHXNUpsxM9MB;Je=R$@D~<2r1hO2MO|uP^~u ze}jn^((n~Qo1)@~aWPXvN*-4Y>-s|LF2C85@(8YKC^E~WkHuC)iJEZD7r)ZiSqn>3 ziBjusXsj_#LysY`9}r)~(QqCxA0@N1j%tXC%()qta+f9CY* z+e$}@Y?M(#d^2D+hqFh9&C`&4$q5wb`m$!*l8}1%N&c$eS_B+s4y=+-BcUG_3O3e~ z>OdL;8IQZ*nU#^?ra@s<)Cbj)R_rhdC^;PO<;sY`w$*I2gTxzT9$0}(!?(=J)75`t z8RbggY+!8ryqg!dZ$0awWvhH5Wz^#5gMeAa%!SMmq`$F6D0qU`qW16q8?bbQ_py_p ztLQG3fhQOgF$R`XOSV8Zrk@ z^iB54KP#CNbso=|@R;9ZUtkF4M$OJ6KHbD;FZVk4xy9arcBx}9BQil}6A8Di6jJBX zewNAwqe`1N(p-2mG&;UI{4mZ4i@Of;a3G1zW*Gom@EhWYG+ z6Bvp0s-Xw@^}^&aU|KY1GX0}+-Uu!q{Bi86{Y%noaNxNqY`w)Sq)VQZm|+rWC?EEV zH46eoNaiKsUNHk2HGaFBi?S~&Bqd({*xkLZ%DYQn$(=({m_rm#6Nb|>e{`>A3tW!f z@01dT37L%-!y#LhC+E>eHL)D9lBd2uxi%^0P^JqP=`*8Pl`nm$;?X^`B$~pQeZDEc zW*1F@=&AxqJXsTUH05}GUNuD$+y5&4cSn;qKAIoCA){fBC@+zL2;)f*3DWb|5+`r- zR!oUwXIR5S;Wpn16~2pOM=Wrg%d<1M&7Ue3g%NddaZkv#`!@c5?8gBg!C~>@Ik0rG z>$P`|o`rF%+im;EdMPk0TbXR(eb|RcA`+o@*o*ORVd}GHs)Dfb&J}~RK=&KW9Z#Yp z7quJD0jJb**nv|5UH>c7N+B`D7z2O3r$K8pzm~%yx(-^RmzOA}tvcxynywFU><9-; zehYn?{~7dt-m>lqA>3B9LlcV`YnUhroYusW_u^@>qr|=n6sLWOwORKRTeT&r+7b&~ zO>gRp36xbtWq*LE5N6<2Mam}^6*5sA!{I2tm5q+AU^K@5DIGhWB<)X}%`khdgd)#u z-0@}k6^7d*$ElcV$Z zVfi+X!b3$p&#Hld8WVweiB-cGimjUB-r5ps_GD(W$E<2$JcDbYpzt<>&lAJELK91D zU#y*akfR?bM2f+}Mo&WbeVY>lhD-aAcsBd2^nMQK6{vFdwr2m1AjuHxE$3{tBoLkdd33DGOo*%nFf&vjR;o^h#E`o$|hfc;F)dB zvaaHw^QW#1&Doi1E<;Ze$NaStYR}3almod(+{Gt2)?_CeQja-p1UET!ql~=CK1ZN@ zSE@ENr%zxqziDDT7G8l0uS7{A7-y-4!;VMW{IznV(;@v4Y z9*kYmlj`un&rUUQgLAHTHvm++2Otzn?5p*OW4cyg?TApD2jkB>Cz^{_UD^<+8j#zZ z@Kk6D*BSfHl*8SSe1Wc6`M`L50RJd&S$$(qO{bW^=YW+jaMN6v{eghC{drze@~+(3 zzz1QtiI2+rBwJ|1no_mO(C$H&CGK43j$;d$Jy0RSdT2qo;Q*8f1sBZ3viDF`9%n|iS5Lllgumc3| z693du`{E8MG;9zUvJ`TpPUcPw&so_z`v~}7v>rGj;Q2bY7M35 zL+gmIp9h{}64JgiS@cRp1%U^|EeS)w_;Mh-z8reDCYWjjsaXF=E)05;4Mj40t@fzu zx9fd-ALN+Kd1Mq2au5JB)1c+xi!!5H?yHm&w#5K)0~&!URFYNjlAu8(GDi>W66v}b zm~)Fd*9@kRT&L!CN9FL^^*5sQ+Ca4 z`;w5$k|_8 zQzugWrmv~TR)~_(%yO}o-*hEhSiovk5Zv~*|1%{V6<)%qRS2>dFeRzUp&JPby%MUYJ_q3)deA+%FOdktxTg z$>V3lTU09E=Xe+UHcz74UR&7~Oq?w>`W}%cVkZ+QG`wU!?grz1sSOocJoYM{-;v%C z%P1}i4%xMfvTLhTkptl8KB%)2x?9Na;_Qoqf8^8zZgO#-b_lX18kBsYt@?W6RB)Y< z0)F3qU889Q>%y;Z`eXb2bI`dK9f9azJC(4X=#@9MCYsuCEpwJeZqU5FQA6eYs3B_a z;awsgQPRT%hufY`ERu<;@u|-uUJyK*s(+dav-7vwU!Zt4^0ZSFTbieJ(4S3iSOW7p zye3M3_YK#^des>dQR>)4+Zoc27#{jMh4v9+Dl2m!!AFUz@W79>X)bBj+ZRN3oIyZ& z?nMaCRRSvUN%8ZJ_-#?po5{2K@+12zBg32Lcy}mugf}cI-NiA-IDOi{@90iv_(O3S@SDu7I%{{yAd7yN#FL&VRQWq(6Ko>dQ0slU-4R%4l< zF1><$_jDB>GX!SqrzZt>aKsbi$(cwRk(qRUkHtnk%*YO@W_)u5ty$%vW|y za7hfWF~Oi`;Q%;fYo#ro%1v<5*UXPsw4sO9kmVvPam=x=kD} zvDR-W+V5V#-My*&4e`qiN_Z#1eUzIDht2orzNoi&Z-3N2aEn6&h@HagAQBPjPvmPT z{XrdX&OJyS=jzf6{tV(j(cU9(?@`78Dv@7g=4(-CJm``SZa+*Ne&AkJAHJ(|C%PhO zU#G;_J|n=s;_fDjljtxN_U4HsV6clnLL%es9`SjxUCJpUTWU1As;Jf8{OjDp#AdMI zEq3t?!B8kAWa@iT_kD%8Q(t(Tzj{f)`CpgPr6cXnUD2})RNW%9;Hdqw(q`ofGNbmI z7agK))IR$ckd30g*~i)CK76(81e9?mz5VsoIS`gAm&z16v2=~jjK-86YwW5jW45kl4-RYfCjUSHL7nS zyMcoYdRx_6KXg#~7;+|IN1wA^WA%c`X!?CsfxZs-6!gwv4W>ukj?ryPvH_s&)xb=+^&c^o4tv8iK)Wiqmw!k(u8;m~DUzw_fIQ&Bf#hE3FWEns3;ep?|kXV{NhrV|2n~-B% zGLPv4@t$IgEH%5t_5*yqwZ&3luVIz;)`rYex%nzJUuE(&;a=+Ktt~BrTt3t2`$+7( zlcYL1$OKw&a0;e6EMc@%%|xR5w6ZxJ_S~eoUN4aW&+fqoqV$Y{YpIH#E%r+NVLaO% z>RntUmAg}8c&b+`ZK23naK{D_O@5aRkV23M`Hj|UUy6GIbQRFg{>T!@X{uhX`tgX8 zqcYfhhoG#{3=gCi$o|pr_2Pm<#s_E}f=t*8QH6eZp*=+^*yUWY^oE{=GU(%U+s_?E z)G`kX=7m=$K5ij0A?+&b6qM-M04Cm0}c7zoa(RP5#Y#fe&3Q=Bl7 zTDx8Zdzb;JZW!@miD+vmeQk6X;YxIF40t&0z5-P=N#AmU+;e1A&<;%lNs8~c3ww== zK*vK{uW`a=U7W(OPWb;p3k{*BB3!z&L68LsE}aN(ikIaqcc>PJ?PLp7Iphw3-yjp} zimTO?<2MS&(X(S0EW%>JZFR-zYwz>n|CI5ieLpXx3QqY}`(Rv=FP+Jj+i&kNcxbf1 z_-D?k6l&~55l*+*Goh%JodCfY=-x{`a(j_^1O7kxikmt3ALNL?>i>tmw*il;x)#4r zk^u&dX4I%rqeexALhVc@feZK-4G9TUNs|DQ6_wV(P>V_>YOZ;IYo9ZjlK{89&wKyxeg4ne=;F-TXMe7} z_S$Q&z4qG2serH#ql6)pU}*cPM-B%Zua_xL*}7uh0a0@3F<8*W{qp1_1&Y;K=z%uX z`C&Unh@Wdr&*Q@i^}+EnB+#S$KN#2`VUO=_d+0l=J<4PgNdXS_8eJp9V{(ESB|o$c z;qJ)m)UgqHHY)B%0o9@|roX#X#gTzUZzxUQ9j>d$%Gaxng>z-2f~$|jrabScC)?&z zYdse4(SaPBG;op3d}>c#XHh>_+`W9 zFdHB0`$V{OcvAR+Zs&7;C>jQ>^ex7YQ11AAZ}yFxxl3B$t8!~OoS___>os3)oIZWR z_=(rctt;xQDL)##lH5d8S#$oUWi`%{aKf^Mk-zUtehkIr|r)eUH!#Tw-w3+0% znWWK@WW1{1HYP@*cZ#3TaO|k@Mgen)Z8WG~Hq&}PB;U6hum0KNdVsmYPFD7s^Vhky{qvBp#-oa@Lqk3nP z3OA(Or0TiJ;ro5W?oG|9)XVi+57|t_O@9pLIW@IROfUwf9I`R& zDwQwZCcRZ<7H*5+mu*6|)!(b>aZFl0uv7mL>Qb>p{v}wvrCsxTw9bA`nB+8Z+E!gOqrdI#wVuS5zz$( zrg29tHQhbW3Z5LNij zy3jD6Q2l3?ReNW=Rx`nz#a&;fFT`aN70gVpKLiC}UM@bYj9!Ih}JiFq8 zyZ8w16aqllZvBt7OAQ?XbrdA- znYMkO7&*4N-Wlv|8=SXaZeD)hAR^5FBHK5iWo$sx=~8{##;h*Oo*ka1xYgr@9L&qi zxoQHnb#`pr>Jy5r*?2mtBLP7DAu*-Gv_)hc44J1QDJ7u>MSfCm{dH3&zoUn;@IyNe zKgq!qcE%a!`oNysZ0b74z|_PUIk}UtSe{r#6j#_Y|#zmRX1_RJETHH=owRpGE%$^{Z!Q^c*tOAW|O&~`@Rg@pvYM@BO z1rb%*&C z8anzC5ZdR#QG;jLxXfGn{4FK`IZGDPc~c|x2_iHHy{$kqu#*X3J1XHB$k|(Fgm%DM z0$J!#lhU)cuH@?Hostq!*xQEKsea>57!BgxOdev72eHYHB z=ku8$2gQWfeCB@Xutu&5trF)^G4u-Z2}--{(1u&-tXx~v*J82~Bd74B3cc&R+M^kY zS0u8Jv)ra18{8FFw_J^P#RWvyTze?0_Crl%>mKi6b117}Y#p*!9J}IcH9+yRd5BRT z9`pBQ#eVx*-_8j~^$%l0y8ike?;$hO{=FEE=sSSOG#uh=YYJT+wd?J#SwnI8$d80; zh35b_#_sw-dL{YL2Js5mo@5s!_%&l z)Q!?@rm_tgkI~*tmLiqQfjTnq&by5#^!P8_j~%v#0uE!$V- zws_YIe)Z4wuZF(f@OHqvE|9mrFCFXNb$Z@$rz zI?~qRa2ps%j6Cv&=7eG*b@dn3*6h%H;l{|W8I588Ioue3rjZ9@VA!r4g(S&hrzOUv zeX>Y0vUofkfrMxgknV2~Y@3@Fa!OJ50MrfboL0=*85l3R0J9_OriqM!>WGuSf@HJq zQne}Je8c1q2|)e`^!?9>%RFNb3}lYCf7$e{@BGGw*H?YGYFynr{-}xf+3l~hH_VMe zj2F|kGIAF>f@+OJ$X&T~o@WknbMiwfUB%5Q7pc>w$5orU@Q1Yz6@uK(i|i)bH*5^8 zU`{g*9`^WTW{lbygAg~V7G7@rj*72UnQ8vVcpCZXZRT2|(3EY}`kk2?f%QD3?=WxiAYp!_DsI87h8}?bc zy~bs>N5+(}9%C(n+p6)b5{%JWE%P}-`0kj3?#_ZnJX3#Gvw$V4@RNz6cu@b^Yj?$t zPru$)-Pt*Xsn36-qny~-+T-7U~#nvcer*>D2s@311 zA8sp1Py)@Y(8Kr8D`9hZ+4n|6HW3_dp*oylKF+{5WfpoMxb+&z%DjKmzofEcUO5i3 zZ!ejTZxP?T(uGSFlqXe|+~zN-@{LZqdY*ZXj%B?4K5uMBh0mQa569z6{DW7$)F3(e zugoZpyqup=CNG#M@x_jlV_U{@<)i*G;eoiM%Pu{3Bj@V=gWVg`yhY7b<{C&9V!ACp zcUcK8i`QkZEy5=%{~iYpn@{mX*Wo;(mUrm#mnyCVWib{Y;4!w|}jCE(9wU5X%=E#Da z)o?(@UZwU)um1;fs=4!Fo{i*U8)hs<$n{tT=y45u51*%TN1 z9_GE+^h$fpP5L*DkoGv__F<@7k+&z>A$G|vA&`Sn4_Mz+3%QGT1Vm%s1=#=SV&{y^ z{IXibIXVZ6Zw7^z+THP!kxIC1tom21Xei?*TU?L}14WMR<$+3n$TAd`lx_Fqb;Skm zml#vf&3h8W|EZkOob35y^=F-TsC37Kx?Qi4gig$1X?E0;cdTZb{&i#eO|kgPf6ee! zDR)+J*ymVaoWnE0!Adso80V;HN;j{5+jw-F$`4(7R@cfH?n|rP6_0(&(dw5JmSJ0R zKY-E9m>ygeVyk=S-BKjDfWqR}O_a9Hw#BV>K?Ee471F*m_{?@C5SuhLo&G}}g60r7 zT1~n#El04Y;STe-x<4VM2(Mv>CvPuC_u(-Zckf`nFbYH7@F`VFZ82>~c=~D89@$D$T zjU7Vaxg2rJ31x~5&|+o=IY%E6Sx5Ajlp_`_qLeYFYf>ONgw9ea1jXDq`Uo-1MLCM1 z^xL77dsTWF-{OJbSg2{T%!q6RIs&($%?gP-2%JUetcOLAZawGEahuzs-u^lUgQj=1 z+!?GE^7Do28MMv1?MM6=uV*#Wru3<{>R%kWR`PE#bOs_jh$Ianrm;>{^}GKiX_2a* ze;h+s_Qwu}PW%S8vq#o)a2ly-jmV&~2Fnj!E;ZZ}#zC98Q=9$+TQwHaYI{8O*>8G| zh}ou^D3~h5L}947Lp2J*zq9(-Mc%SeG9x5D==GM)+l4+LqS-unHtEVN};h(n2o)uCt~EucoR zm`MG$Ky@+PC{b|CVc->?f5oj|cvN2UJn^42n04rXiSj%HGT z)66KPR6T1~rf9y4s04j`C>x*B4+(`}!96)e+A5lil1+*Of#bW5ib_n-41d-1`Z@5b zmipQJD{)V0JwdZ;xkk``ky5pbw{Jy zm7;2ElCTvGEzEWXRN|?gJ;vcg@H1(6BZCAhyGxEmFyO2em9vqz+zj`u z3=Tzq*`dE1(wteM?G6xX zQ@+Z_9{L$^2}PL`S9b}e8|Hr__!aav;A_XIT+h;^z(a!0UWJV^)Egkx^)>|Zla%>; zFsn`v3SrF%`d8_S7#Ysh1Q^UFJNVFYc~RUYCm8g}OK_?r=4H(o_*O{st~U592Ua-|a!6PF0y~{A4bBnuIydzBE)JlMue1%@qaRCG+0@u| z_0<1V+Z5ZQax;dBNByqeB{$TGkQ^8!n?+}uMndPQG1?WJV#5X3y%<{xA`isX?~s@e z$>{gw)zwT>^O%8wfYJPbVz~_F>BNDJoxZXDs(`AQ$6Hsu9eoR$TKZj(7x1nc)|Qv)*wnx^>5<)Kdevlt8pGiwZWfQH;38Xs|6Ajx@P@zi#ipX?Dae;anXXzC%PUDU~ zq3#h-jdamND>$w&NRBhm?T7TqQ*OEt0Gx2c!gWD>jc!bWAd#!76eh@HqM`Jrcj z*@xX!%v&yVh-F_+=~D(VN0W7$>q~LNJ{;MyTL^=;3X?&WxD3IUZSjKerR~2eL@>XTxz}*Qt>#`45Ho-AO;6_n=}S6$7Y3VxFUB@`ZTwBRMPi%A zG*9&H)V6b!+7lLziKs_lI(d*tj=ao1BF%&@r)0nxaAwrAEKSAv)05^&XHiwC_7NPn z&C&EB|BmBqms+E%)8GZMaof&m`Y?g3vZI;~(c}DxRusUGn8CaB^SF)F$ioow;e(c~!h&)6Dk`p_Y6HwcIh2iVPk7$d-Zv$@`h+qf&C=}>|hFhB)3q--OD zfhxc*bua=3>2K=qNA2MZrl|cR^MuIxc$Vb+m%SmXVMdgB#k5+l$u}e=hv?=L8lvRk zXc(`a_J;A%4Krf4+vrk-2Sav+hq4Ex)*&47YwAj97-)HOG)#`NyxJQkb2wJkEW~Y? z93#J3v?MfrozTD}W4t+bxPx`l*H#L2m&|ABvE{AK6>ra+< zd!P64i&=fktJL4}Dh-fV*PE{Qr6X2g192w{G!hPK`g#z(I;iQ;pkaG1`jdW4b&~bW zuozLGJB73{-xXF>yL)KBR@;e|A`t{|rorw%?pYq||9f~7C_FAL_D=}Th7=GQNDlh0 zrVpc4HW%xY6ZI6lSh0Q7s{;~S1srXt^G%{_G9)n8lIo6E&TQI)GaH9`F7}<-7>EvL zCwgWl`nicDQIBph?Efq_erhiaopBAlf@AW6XA&;fwGW_)#{K z+(h=^ICkxj-qO>}ZX^AykPWsNv1&B+3re5M*;%MI>_gL3GLX0UXM9#tndN;~xz4yi zRBM>^piPR;2|ddyjm4dQCKs5nUm;%Zk5p1P`~hJpt9ypngT9!;#2R|~d4q=-Z_mI{ z#H=%^_S^aJY^n>oSi%@z-+IdU8VUIaA?&M@02hU~P<(I#=(zX8UUc}+pypz4)`{L% zYSaf8Ms4(5yMBEvSRq>2;*y5q_$wdX?~R7g!xi+QKXog{NHJ!GUizs~Au)cA;f8w9 zKO5_(D7h!QTQi*HRV9Q5$!cl}Ye^)Kp(_WxD$@{Aze}p?1!d-tIwZ?!_NYXC*Zq?d zcZx*m@g5B)_|ktFiOv?5JS$WNhK0YYyu=3p9^S|*H}n>y0LojWEikE*ZD>)_EA3m{ zb8K(JX=Wq@ebFf2x>3{RDoZXO)s12snc`K{crI*gK_#)9`(mZ^{LnQjhO|cO9PUzhkE$!K@-7;HVO>)x77Z@# z$ACOH)RiS&!2I4N$Wp0P{VH?PKx8XVx4D<}y*K`iW85*u1M^F@5d9SVqPYF^v^VSix%HGmIa9EOG{hwsCd$ z5jpU9nn;q9?PpGo^_>^yAB*t)@=Mmi+{s8e^7aqj1hry0CeG)UCM?2VOefk7g#`Ne z-k*PiHbRlB>T@@@^GVHF(@W-l@pp?bqP!~J?4VVX?Rq}^Lfr1Tg%*3wnETeZAlCII zBsPaF6Se++j7G6BostNRq?W<5gcViff)B3 zr$)W;2phzXjTxW7oza*Q_VQeV-k6Hwg|ua<$+8-qwbV9-jed0q6$2e;dru9X>lAGt z&t-KHj#^Jt!T4_5WHVm%yZ!1;)?(NmIbCU+qPN>lYV$me$W+RhIqW^KNRb1{fWUk|3m01^pbjGl<+x20)7?#JWk#owS1l= z0r!PJPnEZ7%jfA5aBKK;w!9TsKF^eZ>Bi^WP~rRV8@amIoI8}MIJ+xuuqWFf_{6gQ zP0G13J89WjL`;nbfhiYvLO_1bji6eTm8^P+S% zz5;O>n4QCarHzZ&o4W8TV?IDg_n+}wH5-UuW>96AU}6Ih8+yGG!%t&9$q;LJPlS9~ zM;e!y&li$L*=UfirA)Pyl$;Vmj)N4lhy9@o^)C=K-xq%shQ^34*4gBR1a)U*@I_>O zzg^km&*rSuN=Hp*co!ElB@6}TIK-YmNqM7z`^yOe2B=~9Egb({n5OUxZ+F5Jl2^A% zoTc%h-w|$di7ut(0ZX)J}mMStAUr70(PlY+C=~uqgk%2i}!{d;K)Gp^@9_2%- zx6hURg~8ir$44DdUVoCY{d>FVgP5RyizM1U8>(RgF*wEEVQcJ+Htw1;UIRAvwiFp9Il6Xo4MIQ@r?xYfsr6u`I( z8-3X6*02?x!J8wv=DQ(L1oPT-4)=!9d_SyRp;#zl8b8rrVT zF9qZ+z?+G(31O5~gR<>QSl2Jr9OY|^_VV)(a179RKX{XYv2XXT>K+&Oz|Kz27=^=3 zv^mZ90fNJ;$S3?=-bKIh?gaavkC+%7XTeElf{8otR`I=jb$FxBf0;s-2*NF5C8Kqo z**H;Q?gGW&!U(gBWqhpKuq0qE7JEO;aKv|{TCOv>uxfq+ly}Bcmp-AFQ=%zS$JM__ zLF%k@{eJaJ4$zC~J}C^$tBiIqL5jmiolGN+Ug!wGxI#7LoU$ek7RvqfDP0s3fSHGj2c7_Wx=-XJAAx9w2 z_|H;~0-3YI=fH9>C=6U5%buTD3lxG1>pZ9GiA|!IGb2mf5gR2Um#|Up8%3ScGEo-w z+7UTuL|wz{r#oPtb&nfifjbbp6+>sKZo}PzQ|OE#i9ZM}-%yXr_?}IfN4$erz?Tu80`63eX3qo{!DJoeZQXiogBB{Y}#{-h9Ncf6$ zH{4GOW$shkb>Yfo^wpkF?OzA^7pwT)*eW2~?lVLfR`}t4zhy`m$HIQ2gH>w0$WS|r z?7$ZzOzOOQoLW5Hbw~Wu-g9*hvrfiGqV0DHke~~G)AI6!J*&839c|<7-J}`D?q`4uJTx~4aQLl5D6q}b@Hd48Z@hjZh?nitu;0)lNh)K*277BJ z9Fg8+yC)MVNwM#^ZJqF9Brjq$2P(kOA88Y)*TL7GQ( zYhWQ%R8U~yznec1k`#tM#nv)Kw0T5ubjI{du}cB|DV{=m&85nsBI{VsZHcpHgl5P( zS9w=a&f@-{;$5yzd2y!8;Mm~yLl}5(%?w(lN^`ytKHlpQ73Wt`(b3@D_!}}#o~!D{ zj#qqOy2xq;;JI0XgEegdZ*$ni;8QK$RtZgyi3|SG=(~WoH5fk*i@Bh!@xJTOo@Bd`!-YI`S*F-h77_;&x}y--Rb{fV{J>cM7k1L z4q_c0MZ}}`*)HrC(bxXGR`;6kdkEHnyyk}3=n48~>fgNPKrXUkGX^p--sZQ_=e6p# z*ABj!9?Rk>3K7;t%UPKC6`1NT;(pY%ABCob8*3) zAmwGjOe4DazhY<;Te}MsI%=C(m0i$bJKJ1n_*qzVM!(z9kx1Z~9k%n#a9MTqe!`os z9a55+-pIfDsm{4#rXN-Z*33l2l+x$}{cAMjvX!tKxqv%MSp6jjVlVcz;`kc!!HT0h zz`yayp0*mC{>bSf+eK7M$IWJ+GPYUt`Kqmkpn<*ZOCl@C;tBW0A}PKWxIJFSiW$4x z+?RwiiooQ*l7_Y?o~M=ozH2)sU0`dUbDk}{rt+QNc~N7)c7exsUiBFPK6)mdXInWC zq40d>fnE06rf4I}>R+oxm#R!JuM-aEkL~`AoVEYrNul$CHe>s2np#g_L+@>?ZTO}9R`<8- z?CAUVV|di428Ghfa>lHI1Plx;1f@4%yvC#1ca`zfP)jC~` z7W4ag0dHG-Vq-7P&h2zH2E6-a+!%{f)Zb=Q@>$y{x)wR9ChL7!BX?d2F8{@{FrL}j zF)6{`iT_~uLV%yTcl!bF_HYL0w$FJu(tYurBPHI!1CttU;mQmNM^1V* zdceE2^U6j`oI@QXHp)93;3sN@1Kur`5pbp~v>6qW0ub^9kEn-%&Adn0Kg7^+YA+T31XGL%uY+Ts!eeOyJ zS(J%V{XPm+$Z`m>ijYbTnT;(UrF$l@5R4Hym)I3_9N+cNDaHSY2-KS*d?eP?Z<)Tp zMe(3kEiWpiZOvM)3d+U#jq$pKSJfwMNU86O18TiuzFkr$d+&zI5;{

a_VQJ@2Kx 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 P4$!5B^t|>fyYK%20D)O2 From 26727ee044f0be22abf070c7d320bce2da2c0d9a Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Fri, 11 Feb 2011 23:32:38 +0000 Subject: [PATCH 54/62] refactor: split out estate management commands into separate class --- .../World/Estate/EstateManagementCommands.cs | 156 +++++ .../World/Estate/EstateManagementModule.cs | 584 ++++++++---------- 2 files changed, 400 insertions(+), 340 deletions(-) create mode 100644 OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs new file mode 100644 index 0000000000..14f5b1ef94 --- /dev/null +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs @@ -0,0 +1,156 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Security; +using log4net; +using Nini.Config; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; + +namespace OpenSim.Region.CoreModules.World.Estate +{ + public class EstateManagementCommands + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + protected EstateManagementModule m_module; + + public EstateManagementCommands(EstateManagementModule module) + { + m_module = module; + } + + public void Initialise() + { + m_module.Scene.AddCommand(this, "set terrain texture", + "set terrain texture [] []", + "Sets the terrain to , if or are specified, it will only " + + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + + " that coordinate.", + consoleSetTerrainTexture); + + m_module.Scene.AddCommand(this, "set terrain heights", + "set terrain heights [] []", + "Sets the terrain texture heights on corner # to /, if or are specified, it will only " + + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + + " that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.", + consoleSetTerrainHeights); + } + + protected void consoleSetTerrainTexture(string module, string[] args) + { + string num = args[3]; + string uuid = args[4]; + int x = (args.Length > 5 ? int.Parse(args[5]) : -1); + int y = (args.Length > 6 ? int.Parse(args[6]) : -1); + + if (x == -1 || m_module.Scene.RegionInfo.RegionLocX == x) + { + if (y == -1 || m_module.Scene.RegionInfo.RegionLocY == y) + { + int corner = int.Parse(num); + UUID texture = UUID.Parse(uuid); + + m_log.Debug("[ESTATEMODULE]: Setting terrain textures for " + m_module.Scene.RegionInfo.RegionName + + string.Format(" (C#{0} = {1})", corner, texture)); + + switch (corner) + { + case 0: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; + break; + case 1: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; + break; + case 2: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; + break; + case 3: + m_module.Scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; + break; + } + + m_module.Scene.RegionInfo.RegionSettings.Save(); + m_module.TriggerRegionInfoChange(); + m_module.sendRegionInfoPacketToAll(); + } + } + } + + protected void consoleSetTerrainHeights(string module, string[] args) + { + string num = args[3]; + string min = args[4]; + string max = args[5]; + int x = (args.Length > 6 ? int.Parse(args[6]) : -1); + int y = (args.Length > 7 ? int.Parse(args[7]) : -1); + + if (x == -1 || m_module.Scene.RegionInfo.RegionLocX == x) + { + if (y == -1 || m_module.Scene.RegionInfo.RegionLocY == y) + { + int corner = int.Parse(num); + float lowValue = float.Parse(min, Culture.NumberFormatInfo); + float highValue = float.Parse(max, Culture.NumberFormatInfo); + + m_log.Debug("[ESTATEMODULE]: Setting terrain heights " + m_module.Scene.RegionInfo.RegionName + + string.Format(" (C{0}, {1}-{2}", corner, lowValue, highValue)); + + switch (corner) + { + case 0: + m_module.Scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2SW = highValue; + break; + case 1: + m_module.Scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2NW = highValue; + break; + case 2: + m_module.Scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2SE = highValue; + break; + case 3: + m_module.Scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; + m_module.Scene.RegionInfo.RegionSettings.Elevation2NE = highValue; + break; + } + + m_module.Scene.RegionInfo.RegionSettings.Save(); + m_module.TriggerRegionInfoChange(); + m_module.sendRegionHandshakeToAll(); + } + } + } + } +} \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 01f04d93d3..54d3c6126d 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -24,6 +24,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ + using System; using System.Collections.Generic; using System.IO; @@ -44,7 +45,9 @@ namespace OpenSim.Region.CoreModules.World.Estate private delegate void LookupUUIDS(List uuidLst); - private Scene m_scene; + public Scene Scene { get; private set; } + + protected EstateManagementCommands m_commands; private EstateTerrainXferHandler TerrainUploader; @@ -58,89 +61,89 @@ namespace OpenSim.Region.CoreModules.World.Estate { uint sun = 0; - if (!m_scene.RegionInfo.EstateSettings.UseGlobalTime) - sun=(uint)(m_scene.RegionInfo.EstateSettings.SunPosition*1024.0) + 0x1800; + if (!Scene.RegionInfo.EstateSettings.UseGlobalTime) + sun = (uint)(Scene.RegionInfo.EstateSettings.SunPosition * 1024.0) + 0x1800; UUID estateOwner; - estateOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; + estateOwner = Scene.RegionInfo.EstateSettings.EstateOwner; - if (m_scene.Permissions.IsGod(remote_client.AgentId)) + if (Scene.Permissions.IsGod(remote_client.AgentId)) estateOwner = remote_client.AgentId; remote_client.SendDetailedEstateData(invoice, - m_scene.RegionInfo.EstateSettings.EstateName, - m_scene.RegionInfo.EstateSettings.EstateID, - m_scene.RegionInfo.EstateSettings.ParentEstateID, + Scene.RegionInfo.EstateSettings.EstateName, + Scene.RegionInfo.EstateSettings.EstateID, + Scene.RegionInfo.EstateSettings.ParentEstateID, GetEstateFlags(), sun, - m_scene.RegionInfo.RegionSettings.Covenant, - m_scene.RegionInfo.EstateSettings.AbuseEmail, + Scene.RegionInfo.RegionSettings.Covenant, + Scene.RegionInfo.EstateSettings.AbuseEmail, estateOwner); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, - m_scene.RegionInfo.EstateSettings.EstateManagers, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateManagers, + Scene.RegionInfo.EstateSettings.EstateID); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, - m_scene.RegionInfo.EstateSettings.EstateAccess, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateAccess, + Scene.RegionInfo.EstateSettings.EstateID); remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, - m_scene.RegionInfo.EstateSettings.EstateGroups, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateGroups, + Scene.RegionInfo.EstateSettings.EstateID); remote_client.SendBannedUserList(invoice, - m_scene.RegionInfo.EstateSettings.EstateBans, - m_scene.RegionInfo.EstateSettings.EstateID); + Scene.RegionInfo.EstateSettings.EstateBans, + Scene.RegionInfo.EstateSettings.EstateID); } private void estateSetRegionInfoHandler(bool blockTerraform, bool noFly, bool allowDamage, bool blockLandResell, int maxAgents, float objectBonusFactor, int matureLevel, bool restrictPushObject, bool allowParcelChanges) { if (blockTerraform) - m_scene.RegionInfo.RegionSettings.BlockTerraform = true; + Scene.RegionInfo.RegionSettings.BlockTerraform = true; else - m_scene.RegionInfo.RegionSettings.BlockTerraform = false; + Scene.RegionInfo.RegionSettings.BlockTerraform = false; if (noFly) - m_scene.RegionInfo.RegionSettings.BlockFly = true; + Scene.RegionInfo.RegionSettings.BlockFly = true; else - m_scene.RegionInfo.RegionSettings.BlockFly = false; + Scene.RegionInfo.RegionSettings.BlockFly = false; if (allowDamage) - m_scene.RegionInfo.RegionSettings.AllowDamage = true; + Scene.RegionInfo.RegionSettings.AllowDamage = true; else - m_scene.RegionInfo.RegionSettings.AllowDamage = false; + Scene.RegionInfo.RegionSettings.AllowDamage = false; if (blockLandResell) - m_scene.RegionInfo.RegionSettings.AllowLandResell = false; + Scene.RegionInfo.RegionSettings.AllowLandResell = false; else - m_scene.RegionInfo.RegionSettings.AllowLandResell = true; + Scene.RegionInfo.RegionSettings.AllowLandResell = true; - m_scene.RegionInfo.RegionSettings.AgentLimit = (byte) maxAgents; + Scene.RegionInfo.RegionSettings.AgentLimit = (byte) maxAgents; - m_scene.RegionInfo.RegionSettings.ObjectBonus = objectBonusFactor; + Scene.RegionInfo.RegionSettings.ObjectBonus = objectBonusFactor; if (matureLevel <= 13) - m_scene.RegionInfo.RegionSettings.Maturity = 0; + Scene.RegionInfo.RegionSettings.Maturity = 0; else if (matureLevel <= 21) - m_scene.RegionInfo.RegionSettings.Maturity = 1; + Scene.RegionInfo.RegionSettings.Maturity = 1; else - m_scene.RegionInfo.RegionSettings.Maturity = 2; + Scene.RegionInfo.RegionSettings.Maturity = 2; if (restrictPushObject) - m_scene.RegionInfo.RegionSettings.RestrictPushing = true; + Scene.RegionInfo.RegionSettings.RestrictPushing = true; else - m_scene.RegionInfo.RegionSettings.RestrictPushing = false; + Scene.RegionInfo.RegionSettings.RestrictPushing = false; if (allowParcelChanges) - m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = true; + Scene.RegionInfo.RegionSettings.AllowLandJoinDivide = true; else - m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide = false; + Scene.RegionInfo.RegionSettings.AllowLandJoinDivide = false; - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); sendRegionInfoPacketToAll(); @@ -154,19 +157,19 @@ namespace OpenSim.Region.CoreModules.World.Estate switch (corner) { case 0: - m_scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; break; case 1: - m_scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; break; case 2: - m_scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; break; case 3: - m_scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; + Scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; break; } - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); sendRegionInfoPacketToAll(); } @@ -176,23 +179,23 @@ namespace OpenSim.Region.CoreModules.World.Estate switch (corner) { case 0: - m_scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SW = highValue; + Scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2SW = highValue; break; case 1: - m_scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NW = highValue; + Scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2NW = highValue; break; case 2: - m_scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SE = highValue; + Scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2SE = highValue; break; case 3: - m_scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NE = highValue; + Scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; + Scene.RegionInfo.RegionSettings.Elevation2NE = highValue; break; } - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); sendRegionInfoPacketToAll(); } @@ -208,30 +211,30 @@ namespace OpenSim.Region.CoreModules.World.Estate bool UseGlobal, bool EstateFixedSun, float EstateSunHour) { // Water Height - m_scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; + Scene.RegionInfo.RegionSettings.WaterHeight = WaterHeight; // Terraforming limits - m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit = TerrainRaiseLimit; - m_scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; + Scene.RegionInfo.RegionSettings.TerrainRaiseLimit = TerrainRaiseLimit; + Scene.RegionInfo.RegionSettings.TerrainLowerLimit = TerrainLowerLimit; // Time of day / fixed sun - m_scene.RegionInfo.RegionSettings.UseEstateSun = UseEstateSun; - m_scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; - m_scene.RegionInfo.RegionSettings.SunPosition = SunHour; + Scene.RegionInfo.RegionSettings.UseEstateSun = UseEstateSun; + Scene.RegionInfo.RegionSettings.FixedSun = UseFixedSun; + Scene.RegionInfo.RegionSettings.SunPosition = SunHour; - m_scene.TriggerEstateSunUpdate(); + Scene.TriggerEstateSunUpdate(); //m_log.Debug("[ESTATE]: UFS: " + UseFixedSun.ToString()); //m_log.Debug("[ESTATE]: SunHour: " + SunHour.ToString()); sendRegionInfoPacketToAll(); - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); } private void handleEstateRestartSimRequest(IClientAPI remoteClient, int timeInSeconds) { - IRestartModule restartModule = m_scene.RequestModuleInterface(); + IRestartModule restartModule = Scene.RequestModuleInterface(); if (restartModule != null) { List times = new List(); @@ -252,8 +255,8 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleChangeEstateCovenantRequest(IClientAPI remoteClient, UUID estateCovenantID) { - m_scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Covenant = estateCovenantID; + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); } @@ -261,17 +264,17 @@ namespace OpenSim.Region.CoreModules.World.Estate { // EstateAccessDelta handles Estate Managers, Sim Access, Sim Banlist, allowed Groups.. etc. - if (user == m_scene.RegionInfo.EstateSettings.EstateOwner) + if (user == Scene.RegionInfo.EstateSettings.EstateOwner) return; // never process EO if ((estateAccessType & 4) != 0) // User add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.AddEstateUser(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddEstateUser(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -281,13 +284,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 8) != 0) // User remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.RemoveEstateUser(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveEstateUser(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, Scene.RegionInfo.EstateSettings.EstateAccess, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -296,12 +299,12 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 16) != 0) // Group add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.AddEstateGroup(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddEstateGroup(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -310,13 +313,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 32) != 0) // Group remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveEstateGroup(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, Scene.RegionInfo.EstateSettings.EstateGroups, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -325,9 +328,9 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 64) != 0) // Ban add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || Scene.Permissions.BypassPermissions()) { - EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; + EstateBan[] banlistcheck = Scene.RegionInfo.EstateSettings.EstateBans; bool alreadyInList = false; @@ -346,20 +349,20 @@ namespace OpenSim.Region.CoreModules.World.Estate EstateBan item = new EstateBan(); item.BannedUserID = user; - item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID; + item.EstateID = Scene.RegionInfo.EstateSettings.EstateID; item.BannedHostAddress = "0.0.0.0"; item.BannedHostIPMask = "0.0.0.0"; - m_scene.RegionInfo.EstateSettings.AddBan(item); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddBan(item); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - ScenePresence s = m_scene.GetScenePresence(user); + ScenePresence s = Scene.GetScenePresence(user); if (s != null) { if (!s.IsChildAgent) { - m_scene.TeleportClientHome(user, s.ControllingClient); + Scene.TeleportClientHome(user, s.ControllingClient); } } @@ -369,7 +372,7 @@ namespace OpenSim.Region.CoreModules.World.Estate remote_client.SendAlertMessage("User is already on the region ban list"); } //m_scene.RegionInfo.regionBanlist.Add(Manager(user); - remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -378,9 +381,9 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 128) != 0) // Ban remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || Scene.Permissions.BypassPermissions()) { - EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; + EstateBan[] banlistcheck = Scene.RegionInfo.EstateSettings.EstateBans; bool alreadyInList = false; EstateBan listitem = null; @@ -393,20 +396,21 @@ namespace OpenSim.Region.CoreModules.World.Estate listitem = banlistcheck[i]; break; } - } + if (alreadyInList && listitem != null) { - m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); } else { remote_client.SendAlertMessage("User is not on the region ban list"); } + //m_scene.RegionInfo.regionBanlist.Add(Manager(user); - remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendBannedUserList(invoice, Scene.RegionInfo.EstateSettings.EstateBans, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -415,12 +419,12 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 256) != 0) // Manager add { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.AddEstateManager(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.AddEstateManager(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -429,13 +433,13 @@ namespace OpenSim.Region.CoreModules.World.Estate } if ((estateAccessType & 512) != 0) // Manager remove { - if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) + if (Scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || Scene.Permissions.BypassPermissions()) { - m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.RemoveEstateManager(user); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID); + remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, Scene.RegionInfo.EstateSettings.EstateManagers, Scene.RegionInfo.EstateSettings.EstateID); } else { @@ -447,7 +451,7 @@ namespace OpenSim.Region.CoreModules.World.Estate private void SendSimulatorBlueBoxMessage( IClientAPI remote_client, UUID invoice, UUID senderID, UUID sessionID, string senderName, string message) { - IDialogModule dm = m_scene.RequestModuleInterface(); + IDialogModule dm = Scene.RequestModuleInterface(); if (dm != null) dm.SendNotificationToUsersInRegion(senderID, senderName, message); @@ -462,61 +466,62 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleEstateDebugRegionRequest(IClientAPI remote_client, UUID invoice, UUID senderID, bool scripted, bool collisionEvents, bool physics) { if (physics) - m_scene.RegionInfo.RegionSettings.DisablePhysics = true; + Scene.RegionInfo.RegionSettings.DisablePhysics = true; else - m_scene.RegionInfo.RegionSettings.DisablePhysics = false; + Scene.RegionInfo.RegionSettings.DisablePhysics = false; if (scripted) - m_scene.RegionInfo.RegionSettings.DisableScripts = true; + Scene.RegionInfo.RegionSettings.DisableScripts = true; else - m_scene.RegionInfo.RegionSettings.DisableScripts = false; + Scene.RegionInfo.RegionSettings.DisableScripts = false; if (collisionEvents) - m_scene.RegionInfo.RegionSettings.DisableCollisions = true; + Scene.RegionInfo.RegionSettings.DisableCollisions = true; else - m_scene.RegionInfo.RegionSettings.DisableCollisions = false; + Scene.RegionInfo.RegionSettings.DisableCollisions = false; - m_scene.RegionInfo.RegionSettings.Save(); + Scene.RegionInfo.RegionSettings.Save(); TriggerRegionInfoChange(); - m_scene.SetSceneCoreDebug(scripted, collisionEvents, physics); + Scene.SetSceneCoreDebug(scripted, collisionEvents, physics); } private void handleEstateTeleportOneUserHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID, UUID prey) { - if (!m_scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) + if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) return; if (prey != UUID.Zero) { - ScenePresence s = m_scene.GetScenePresence(prey); + ScenePresence s = Scene.GetScenePresence(prey); if (s != null) { - m_scene.TeleportClientHome(prey, s.ControllingClient); + Scene.TeleportClientHome(prey, s.ControllingClient); } } } private void handleEstateTeleportAllUsersHomeRequest(IClientAPI remover_client, UUID invoice, UUID senderID) { - if (!m_scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) + if (!Scene.Permissions.CanIssueEstateCommand(remover_client.AgentId, false)) return; - m_scene.ForEachScenePresence(delegate(ScenePresence sp) + Scene.ForEachScenePresence(delegate(ScenePresence sp) { if (sp.UUID != senderID) { - ScenePresence p = m_scene.GetScenePresence(sp.UUID); + ScenePresence p = Scene.GetScenePresence(sp.UUID); // make sure they are still there, we could be working down a long list // Also make sure they are actually in the region if (p != null && !p.IsChildAgent) { - m_scene.TeleportClientHome(p.UUID, p.ControllingClient); + Scene.TeleportClientHome(p.UUID, p.ControllingClient); } } }); } + private void AbortTerrainXferHandler(IClientAPI remoteClient, ulong XferID) { if (TerrainUploader != null) @@ -547,11 +552,11 @@ namespace OpenSim.Region.CoreModules.World.Estate TerrainUploader = null; } remoteClient.SendAlertMessage("Terrain Upload Complete. Loading...."); - ITerrainModule terr = m_scene.RequestModuleInterface(); + ITerrainModule terr = Scene.RequestModuleInterface(); if (terr != null) { - m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + m_scene.RegionInfo.RegionName); + m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); try { @@ -597,7 +602,6 @@ namespace OpenSim.Region.CoreModules.World.Estate private void handleUploadTerrain(IClientAPI remote_client, string clientFileName) { - if (TerrainUploader == null) { @@ -615,16 +619,16 @@ namespace OpenSim.Region.CoreModules.World.Estate { remote_client.SendAlertMessage("Another Terrain Upload is in progress. Please wait your turn!"); } - } + private void handleTerrainRequest(IClientAPI remote_client, string clientFileName) { // Save terrain here - ITerrainModule terr = m_scene.RequestModuleInterface(); + ITerrainModule terr = Scene.RequestModuleInterface(); if (terr != null) { - m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + m_scene.RegionInfo.RegionName); + m_log.Warn("[CLIENT]: Got Request to Send Terrain in region " + Scene.RegionInfo.RegionName); if (File.Exists(Util.dataDir() + "/terrain.raw")) { File.Delete(Util.dataDir() + "/terrain.raw"); @@ -635,7 +639,7 @@ namespace OpenSim.Region.CoreModules.World.Estate byte[] bdata = new byte[input.Length]; input.Read(bdata, 0, (int)input.Length); remote_client.SendAlertMessage("Terrain file written, starting download..."); - m_scene.XferManager.AddNewFile("terrain.raw", bdata); + Scene.XferManager.AddNewFile("terrain.raw", bdata); // Tell client about it m_log.Warn("[CLIENT]: Sending Terrain to " + remote_client.Name); remote_client.SendInitiateDownload("terrain.raw", clientFileName); @@ -645,35 +649,35 @@ namespace OpenSim.Region.CoreModules.World.Estate private void HandleRegionInfoRequest(IClientAPI remote_client) { RegionInfoForEstateMenuArgs args = new RegionInfoForEstateMenuArgs(); - args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; - args.estateID = m_scene.RegionInfo.EstateSettings.EstateID; - args.maxAgents = (byte)m_scene.RegionInfo.RegionSettings.AgentLimit; - args.objectBonusFactor = (float)m_scene.RegionInfo.RegionSettings.ObjectBonus; - args.parentEstateID = m_scene.RegionInfo.EstateSettings.ParentEstateID; - args.pricePerMeter = m_scene.RegionInfo.EstateSettings.PricePerMeter; - args.redirectGridX = m_scene.RegionInfo.EstateSettings.RedirectGridX; - args.redirectGridY = m_scene.RegionInfo.EstateSettings.RedirectGridY; + args.billableFactor = Scene.RegionInfo.EstateSettings.BillableFactor; + args.estateID = Scene.RegionInfo.EstateSettings.EstateID; + args.maxAgents = (byte)Scene.RegionInfo.RegionSettings.AgentLimit; + args.objectBonusFactor = (float)Scene.RegionInfo.RegionSettings.ObjectBonus; + args.parentEstateID = Scene.RegionInfo.EstateSettings.ParentEstateID; + args.pricePerMeter = Scene.RegionInfo.EstateSettings.PricePerMeter; + args.redirectGridX = Scene.RegionInfo.EstateSettings.RedirectGridX; + args.redirectGridY = Scene.RegionInfo.EstateSettings.RedirectGridY; args.regionFlags = GetRegionFlags(); - args.simAccess = m_scene.RegionInfo.AccessLevel; - args.sunHour = (float)m_scene.RegionInfo.RegionSettings.SunPosition; - args.terrainLowerLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit; - args.terrainRaiseLimit = (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit; - args.useEstateSun = m_scene.RegionInfo.RegionSettings.UseEstateSun; - args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; - args.simName = m_scene.RegionInfo.RegionName; - args.regionType = m_scene.RegionInfo.RegionType; + args.simAccess = Scene.RegionInfo.AccessLevel; + args.sunHour = (float)Scene.RegionInfo.RegionSettings.SunPosition; + args.terrainLowerLimit = (float)Scene.RegionInfo.RegionSettings.TerrainLowerLimit; + args.terrainRaiseLimit = (float)Scene.RegionInfo.RegionSettings.TerrainRaiseLimit; + args.useEstateSun = Scene.RegionInfo.RegionSettings.UseEstateSun; + args.waterHeight = (float)Scene.RegionInfo.RegionSettings.WaterHeight; + args.simName = Scene.RegionInfo.RegionName; + args.regionType = Scene.RegionInfo.RegionType; remote_client.SendRegionInfoToEstateMenu(args); } private void HandleEstateCovenantRequest(IClientAPI remote_client) { - remote_client.SendEstateCovenantInformation(m_scene.RegionInfo.RegionSettings.Covenant); + remote_client.SendEstateCovenantInformation(Scene.RegionInfo.RegionSettings.Covenant); } private void HandleLandStatRequest(int parcelID, uint reportType, uint requestFlags, string filter, IClientAPI remoteClient) { - if (!m_scene.Permissions.CanIssueEstateCommand(remoteClient.AgentId, false)) + if (!Scene.Permissions.CanIssueEstateCommand(remoteClient.AgentId, false)) return; Dictionary SceneData = new Dictionary(); @@ -681,11 +685,11 @@ namespace OpenSim.Region.CoreModules.World.Estate if (reportType == 1) { - SceneData = m_scene.PhysicsScene.GetTopColliders(); + SceneData = Scene.PhysicsScene.GetTopColliders(); } else if (reportType == 0) { - SceneData = m_scene.SceneGraph.GetTopScripts(); + SceneData = Scene.SceneGraph.GetTopScripts(); } List SceneReport = new List(); @@ -693,7 +697,7 @@ namespace OpenSim.Region.CoreModules.World.Estate { foreach (uint obj in SceneData.Keys) { - SceneObjectPart prt = m_scene.GetSceneObjectPart(obj); + SceneObjectPart prt = Scene.GetSceneObjectPart(obj); if (prt != null) { if (prt.ParentGroup != null) @@ -765,7 +769,7 @@ namespace OpenSim.Region.CoreModules.World.Estate { // string lookupname = m_scene.CommsManager.UUIDNameRequestString(uuidarr[i]); - IUserManagement userManager = m_scene.RequestModuleInterface(); + IUserManagement userManager = Scene.RequestModuleInterface(); if (userManager != null) userManager.GetUserName(uuidarr[i]); @@ -780,7 +784,7 @@ namespace OpenSim.Region.CoreModules.World.Estate public void sendRegionInfoPacketToAll() { - m_scene.ForEachScenePresence(delegate(ScenePresence sp) + Scene.ForEachScenePresence(delegate(ScenePresence sp) { if (!sp.IsChildAgent) HandleRegionInfoRequest(sp.ControllingClient); @@ -791,99 +795,99 @@ namespace OpenSim.Region.CoreModules.World.Estate { RegionHandshakeArgs args = new RegionHandshakeArgs(); - args.isEstateManager = m_scene.RegionInfo.EstateSettings.IsEstateManager(remoteClient.AgentId); - if (m_scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero && m_scene.RegionInfo.EstateSettings.EstateOwner == remoteClient.AgentId) + args.isEstateManager = Scene.RegionInfo.EstateSettings.IsEstateManager(remoteClient.AgentId); + if (Scene.RegionInfo.EstateSettings.EstateOwner != UUID.Zero && Scene.RegionInfo.EstateSettings.EstateOwner == remoteClient.AgentId) args.isEstateManager = true; - args.billableFactor = m_scene.RegionInfo.EstateSettings.BillableFactor; - args.terrainStartHeight0 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SW; - args.terrainHeightRange0 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SW; - args.terrainStartHeight1 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NW; - args.terrainHeightRange1 = (float)m_scene.RegionInfo.RegionSettings.Elevation2NW; - args.terrainStartHeight2 = (float)m_scene.RegionInfo.RegionSettings.Elevation1SE; - args.terrainHeightRange2 = (float)m_scene.RegionInfo.RegionSettings.Elevation2SE; - args.terrainStartHeight3 = (float)m_scene.RegionInfo.RegionSettings.Elevation1NE; - args.terrainHeightRange3 = (float)m_scene.RegionInfo.RegionSettings.Elevation2NE; - args.simAccess = m_scene.RegionInfo.AccessLevel; - args.waterHeight = (float)m_scene.RegionInfo.RegionSettings.WaterHeight; + args.billableFactor = Scene.RegionInfo.EstateSettings.BillableFactor; + args.terrainStartHeight0 = (float)Scene.RegionInfo.RegionSettings.Elevation1SW; + args.terrainHeightRange0 = (float)Scene.RegionInfo.RegionSettings.Elevation2SW; + args.terrainStartHeight1 = (float)Scene.RegionInfo.RegionSettings.Elevation1NW; + args.terrainHeightRange1 = (float)Scene.RegionInfo.RegionSettings.Elevation2NW; + args.terrainStartHeight2 = (float)Scene.RegionInfo.RegionSettings.Elevation1SE; + args.terrainHeightRange2 = (float)Scene.RegionInfo.RegionSettings.Elevation2SE; + args.terrainStartHeight3 = (float)Scene.RegionInfo.RegionSettings.Elevation1NE; + args.terrainHeightRange3 = (float)Scene.RegionInfo.RegionSettings.Elevation2NE; + args.simAccess = Scene.RegionInfo.AccessLevel; + args.waterHeight = (float)Scene.RegionInfo.RegionSettings.WaterHeight; args.regionFlags = GetRegionFlags(); - args.regionName = m_scene.RegionInfo.RegionName; - args.SimOwner = m_scene.RegionInfo.EstateSettings.EstateOwner; + args.regionName = Scene.RegionInfo.RegionName; + args.SimOwner = Scene.RegionInfo.EstateSettings.EstateOwner; args.terrainBase0 = UUID.Zero; args.terrainBase1 = UUID.Zero; args.terrainBase2 = UUID.Zero; args.terrainBase3 = UUID.Zero; - args.terrainDetail0 = m_scene.RegionInfo.RegionSettings.TerrainTexture1; - args.terrainDetail1 = m_scene.RegionInfo.RegionSettings.TerrainTexture2; - args.terrainDetail2 = m_scene.RegionInfo.RegionSettings.TerrainTexture3; - args.terrainDetail3 = m_scene.RegionInfo.RegionSettings.TerrainTexture4; + args.terrainDetail0 = Scene.RegionInfo.RegionSettings.TerrainTexture1; + args.terrainDetail1 = Scene.RegionInfo.RegionSettings.TerrainTexture2; + args.terrainDetail2 = Scene.RegionInfo.RegionSettings.TerrainTexture3; + args.terrainDetail3 = Scene.RegionInfo.RegionSettings.TerrainTexture4; - remoteClient.SendRegionHandshake(m_scene.RegionInfo,args); + remoteClient.SendRegionHandshake(Scene.RegionInfo,args); } public void sendRegionHandshakeToAll() { - m_scene.ForEachClient(sendRegionHandshake); + Scene.ForEachClient(sendRegionHandshake); } public void handleEstateChangeInfo(IClientAPI remoteClient, UUID invoice, UUID senderID, UInt32 parms1, UInt32 parms2) { if (parms2 == 0) { - m_scene.RegionInfo.EstateSettings.UseGlobalTime = true; - m_scene.RegionInfo.EstateSettings.SunPosition = 0.0; + Scene.RegionInfo.EstateSettings.UseGlobalTime = true; + Scene.RegionInfo.EstateSettings.SunPosition = 0.0; } else { - m_scene.RegionInfo.EstateSettings.UseGlobalTime = false; - m_scene.RegionInfo.EstateSettings.SunPosition = (parms2 - 0x1800)/1024.0; + Scene.RegionInfo.EstateSettings.UseGlobalTime = false; + Scene.RegionInfo.EstateSettings.SunPosition = (parms2 - 0x1800)/1024.0; } if ((parms1 & 0x00000010) != 0) - m_scene.RegionInfo.EstateSettings.FixedSun = true; + Scene.RegionInfo.EstateSettings.FixedSun = true; else - m_scene.RegionInfo.EstateSettings.FixedSun = false; + Scene.RegionInfo.EstateSettings.FixedSun = false; if ((parms1 & 0x00008000) != 0) - m_scene.RegionInfo.EstateSettings.PublicAccess = true; + Scene.RegionInfo.EstateSettings.PublicAccess = true; else - m_scene.RegionInfo.EstateSettings.PublicAccess = false; + Scene.RegionInfo.EstateSettings.PublicAccess = false; if ((parms1 & 0x10000000) != 0) - m_scene.RegionInfo.EstateSettings.AllowVoice = true; + Scene.RegionInfo.EstateSettings.AllowVoice = true; else - m_scene.RegionInfo.EstateSettings.AllowVoice = false; + Scene.RegionInfo.EstateSettings.AllowVoice = false; if ((parms1 & 0x00100000) != 0) - m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = true; + Scene.RegionInfo.EstateSettings.AllowDirectTeleport = true; else - m_scene.RegionInfo.EstateSettings.AllowDirectTeleport = false; + Scene.RegionInfo.EstateSettings.AllowDirectTeleport = false; if ((parms1 & 0x00800000) != 0) - m_scene.RegionInfo.EstateSettings.DenyAnonymous = true; + Scene.RegionInfo.EstateSettings.DenyAnonymous = true; else - m_scene.RegionInfo.EstateSettings.DenyAnonymous = false; + Scene.RegionInfo.EstateSettings.DenyAnonymous = false; if ((parms1 & 0x01000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyIdentified = true; + Scene.RegionInfo.EstateSettings.DenyIdentified = true; else - m_scene.RegionInfo.EstateSettings.DenyIdentified = false; + Scene.RegionInfo.EstateSettings.DenyIdentified = false; if ((parms1 & 0x02000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyTransacted = true; + Scene.RegionInfo.EstateSettings.DenyTransacted = true; else - m_scene.RegionInfo.EstateSettings.DenyTransacted = false; + Scene.RegionInfo.EstateSettings.DenyTransacted = false; if ((parms1 & 0x40000000) != 0) - m_scene.RegionInfo.EstateSettings.DenyMinors = true; + Scene.RegionInfo.EstateSettings.DenyMinors = true; else - m_scene.RegionInfo.EstateSettings.DenyMinors = false; + Scene.RegionInfo.EstateSettings.DenyMinors = false; - m_scene.RegionInfo.EstateSettings.Save(); + Scene.RegionInfo.EstateSettings.Save(); TriggerEstateInfoChange(); - m_scene.TriggerEstateSunUpdate(); + Scene.TriggerEstateSunUpdate(); sendDetailedEstateData(remoteClient, invoice); } @@ -893,121 +897,21 @@ namespace OpenSim.Region.CoreModules.World.Estate #region IRegionModule Members public void Initialise(Scene scene, IConfigSource source) - { - m_scene = scene; - m_scene.RegisterModuleInterface(this); - m_scene.EventManager.OnNewClient += EventManager_OnNewClient; - m_scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight; - - m_scene.AddCommand(this, "set terrain texture", - "set terrain texture [] []", - "Sets the terrain to , if or are specified, it will only " + - "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + - " that coordinate.", - consoleSetTerrainTexture); - - m_scene.AddCommand(this, "set terrain heights", - "set terrain heights [] []", - "Sets the terrain texture heights on corner # to /, if or are specified, it will only " + - "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + - " that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.", - consoleSetTerrainHeights); + { + Scene = scene; + Scene.RegisterModuleInterface(this); + Scene.EventManager.OnNewClient += EventManager_OnNewClient; + Scene.EventManager.OnRequestChangeWaterHeight += changeWaterHeight; + + m_commands = new EstateManagementCommands(this); + m_commands.Initialise(); } - #region Console Commands - - public void consoleSetTerrainTexture(string module, string[] args) - { - string num = args[3]; - string uuid = args[4]; - int x = (args.Length > 5 ? int.Parse(args[5]) : -1); - int y = (args.Length > 6 ? int.Parse(args[6]) : -1); - - if (x == -1 || m_scene.RegionInfo.RegionLocX == x) - { - if (y == -1 || m_scene.RegionInfo.RegionLocY == y) - { - int corner = int.Parse(num); - UUID texture = UUID.Parse(uuid); - - m_log.Debug("[ESTATEMODULE] Setting terrain textures for " + m_scene.RegionInfo.RegionName + - string.Format(" (C#{0} = {1})", corner, texture)); - - switch (corner) - { - case 0: - m_scene.RegionInfo.RegionSettings.TerrainTexture1 = texture; - break; - case 1: - m_scene.RegionInfo.RegionSettings.TerrainTexture2 = texture; - break; - case 2: - m_scene.RegionInfo.RegionSettings.TerrainTexture3 = texture; - break; - case 3: - m_scene.RegionInfo.RegionSettings.TerrainTexture4 = texture; - break; - } - m_scene.RegionInfo.RegionSettings.Save(); - TriggerRegionInfoChange(); - sendRegionInfoPacketToAll(); - - } - } - } - - public void consoleSetTerrainHeights(string module, string[] args) - { - string num = args[3]; - string min = args[4]; - string max = args[5]; - int x = (args.Length > 6 ? int.Parse(args[6]) : -1); - int y = (args.Length > 7 ? int.Parse(args[7]) : -1); - - if (x == -1 || m_scene.RegionInfo.RegionLocX == x) - { - if (y == -1 || m_scene.RegionInfo.RegionLocY == y) - { - int corner = int.Parse(num); - float lowValue = float.Parse(min, Culture.NumberFormatInfo); - float highValue = float.Parse(max, Culture.NumberFormatInfo); - - m_log.Debug("[ESTATEMODULE] Setting terrain heights " + m_scene.RegionInfo.RegionName + - string.Format(" (C{0}, {1}-{2}", corner, lowValue, highValue)); - - switch (corner) - { - case 0: - m_scene.RegionInfo.RegionSettings.Elevation1SW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SW = highValue; - break; - case 1: - m_scene.RegionInfo.RegionSettings.Elevation1NW = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NW = highValue; - break; - case 2: - m_scene.RegionInfo.RegionSettings.Elevation1SE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2SE = highValue; - break; - case 3: - m_scene.RegionInfo.RegionSettings.Elevation1NE = lowValue; - m_scene.RegionInfo.RegionSettings.Elevation2NE = highValue; - break; - } - m_scene.RegionInfo.RegionSettings.Save(); - TriggerRegionInfoChange(); - sendRegionHandshakeToAll(); - } - } - } - - #endregion - public void PostInitialise() { // Sets up the sun module based no the saved Estate and Region Settings // DO NOT REMOVE or the sun will stop working - m_scene.TriggerEstateSunUpdate(); + Scene.TriggerEstateSunUpdate(); } public void Close() @@ -1031,14 +935,14 @@ namespace OpenSim.Region.CoreModules.World.Estate public void changeWaterHeight(float height) { setRegionTerrainSettings(height, - (float)m_scene.RegionInfo.RegionSettings.TerrainRaiseLimit, - (float)m_scene.RegionInfo.RegionSettings.TerrainLowerLimit, - m_scene.RegionInfo.RegionSettings.UseEstateSun, - m_scene.RegionInfo.RegionSettings.FixedSun, - (float)m_scene.RegionInfo.RegionSettings.SunPosition, - m_scene.RegionInfo.EstateSettings.UseGlobalTime, - m_scene.RegionInfo.EstateSettings.FixedSun, - (float)m_scene.RegionInfo.EstateSettings.SunPosition); + (float)Scene.RegionInfo.RegionSettings.TerrainRaiseLimit, + (float)Scene.RegionInfo.RegionSettings.TerrainLowerLimit, + Scene.RegionInfo.RegionSettings.UseEstateSun, + Scene.RegionInfo.RegionSettings.FixedSun, + (float)Scene.RegionInfo.RegionSettings.SunPosition, + Scene.RegionInfo.EstateSettings.UseGlobalTime, + Scene.RegionInfo.EstateSettings.FixedSun, + (float)Scene.RegionInfo.EstateSettings.SunPosition); sendRegionInfoPacketToAll(); } @@ -1078,32 +982,32 @@ namespace OpenSim.Region.CoreModules.World.Estate // Fully implemented // - if (m_scene.RegionInfo.RegionSettings.AllowDamage) + if (Scene.RegionInfo.RegionSettings.AllowDamage) flags |= RegionFlags.AllowDamage; - if (m_scene.RegionInfo.RegionSettings.BlockTerraform) + if (Scene.RegionInfo.RegionSettings.BlockTerraform) flags |= RegionFlags.BlockTerraform; - if (!m_scene.RegionInfo.RegionSettings.AllowLandResell) + if (!Scene.RegionInfo.RegionSettings.AllowLandResell) flags |= RegionFlags.BlockLandResell; - if (m_scene.RegionInfo.RegionSettings.DisableCollisions) + if (Scene.RegionInfo.RegionSettings.DisableCollisions) flags |= RegionFlags.SkipCollisions; - if (m_scene.RegionInfo.RegionSettings.DisableScripts) + if (Scene.RegionInfo.RegionSettings.DisableScripts) flags |= RegionFlags.SkipScripts; - if (m_scene.RegionInfo.RegionSettings.DisablePhysics) + if (Scene.RegionInfo.RegionSettings.DisablePhysics) flags |= RegionFlags.SkipPhysics; - if (m_scene.RegionInfo.RegionSettings.BlockFly) + if (Scene.RegionInfo.RegionSettings.BlockFly) flags |= RegionFlags.NoFly; - if (m_scene.RegionInfo.RegionSettings.RestrictPushing) + if (Scene.RegionInfo.RegionSettings.RestrictPushing) flags |= RegionFlags.RestrictPushObject; - if (m_scene.RegionInfo.RegionSettings.AllowLandJoinDivide) + if (Scene.RegionInfo.RegionSettings.AllowLandJoinDivide) flags |= RegionFlags.AllowParcelChanges; - if (m_scene.RegionInfo.RegionSettings.BlockShowInSearch) + if (Scene.RegionInfo.RegionSettings.BlockShowInSearch) flags |= RegionFlags.BlockParcelSearch; - if (m_scene.RegionInfo.RegionSettings.FixedSun) + if (Scene.RegionInfo.RegionSettings.FixedSun) flags |= RegionFlags.SunFixed; - if (m_scene.RegionInfo.RegionSettings.Sandbox) + if (Scene.RegionInfo.RegionSettings.Sandbox) flags |= RegionFlags.Sandbox; - if (m_scene.RegionInfo.EstateSettings.AllowVoice) + if (Scene.RegionInfo.EstateSettings.AllowVoice) flags |= RegionFlags.AllowVoice; // Fudge these to always on, so the menu options activate @@ -1125,32 +1029,32 @@ namespace OpenSim.Region.CoreModules.World.Estate { RegionFlags flags = RegionFlags.None; - if (m_scene.RegionInfo.EstateSettings.FixedSun) + if (Scene.RegionInfo.EstateSettings.FixedSun) flags |= RegionFlags.SunFixed; - if (m_scene.RegionInfo.EstateSettings.PublicAccess) + if (Scene.RegionInfo.EstateSettings.PublicAccess) flags |= (RegionFlags.PublicAllowed | RegionFlags.ExternallyVisible); - if (m_scene.RegionInfo.EstateSettings.AllowVoice) + if (Scene.RegionInfo.EstateSettings.AllowVoice) flags |= RegionFlags.AllowVoice; - if (m_scene.RegionInfo.EstateSettings.AllowDirectTeleport) + if (Scene.RegionInfo.EstateSettings.AllowDirectTeleport) flags |= RegionFlags.AllowDirectTeleport; - if (m_scene.RegionInfo.EstateSettings.DenyAnonymous) + if (Scene.RegionInfo.EstateSettings.DenyAnonymous) flags |= RegionFlags.DenyAnonymous; - if (m_scene.RegionInfo.EstateSettings.DenyIdentified) + if (Scene.RegionInfo.EstateSettings.DenyIdentified) flags |= RegionFlags.DenyIdentified; - if (m_scene.RegionInfo.EstateSettings.DenyTransacted) + if (Scene.RegionInfo.EstateSettings.DenyTransacted) flags |= RegionFlags.DenyTransacted; - if (m_scene.RegionInfo.EstateSettings.AbuseEmailToEstateOwner) + if (Scene.RegionInfo.EstateSettings.AbuseEmailToEstateOwner) flags |= RegionFlags.AbuseEmailToEstateOwner; - if (m_scene.RegionInfo.EstateSettings.BlockDwell) + if (Scene.RegionInfo.EstateSettings.BlockDwell) flags |= RegionFlags.BlockDwell; - if (m_scene.RegionInfo.EstateSettings.EstateSkipScripts) + if (Scene.RegionInfo.EstateSettings.EstateSkipScripts) flags |= RegionFlags.EstateSkipScripts; - if (m_scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) + if (Scene.RegionInfo.EstateSettings.ResetHomeOnTeleport) flags |= RegionFlags.ResetHomeOnTeleport; - if (m_scene.RegionInfo.EstateSettings.TaxFree) + if (Scene.RegionInfo.EstateSettings.TaxFree) flags |= RegionFlags.TaxFree; - if (m_scene.RegionInfo.EstateSettings.DenyMinors) + if (Scene.RegionInfo.EstateSettings.DenyMinors) flags |= (RegionFlags)(1 << 30); return (uint)flags; @@ -1158,38 +1062,38 @@ namespace OpenSim.Region.CoreModules.World.Estate public bool IsManager(UUID avatarID) { - if (avatarID == m_scene.RegionInfo.EstateSettings.EstateOwner) + if (avatarID == Scene.RegionInfo.EstateSettings.EstateOwner) return true; - List ems = new List(m_scene.RegionInfo.EstateSettings.EstateManagers); + List ems = new List(Scene.RegionInfo.EstateSettings.EstateManagers); if (ems.Contains(avatarID)) return true; return false; } - protected void TriggerRegionInfoChange() + public void TriggerRegionInfoChange() { ChangeDelegate change = OnRegionInfoChange; if (change != null) - change(m_scene.RegionInfo.RegionID); + change(Scene.RegionInfo.RegionID); } - protected void TriggerEstateInfoChange() + public void TriggerEstateInfoChange() { ChangeDelegate change = OnEstateInfoChange; if (change != null) - change(m_scene.RegionInfo.RegionID); + change(Scene.RegionInfo.RegionID); } - protected void TriggerEstateMessage(UUID fromID, string fromName, string message) + public void TriggerEstateMessage(UUID fromID, string fromName, string message) { MessageDelegate onmessage = OnEstateMessage; if (onmessage != null) - onmessage(m_scene.RegionInfo.RegionID, fromID, fromName, message); + onmessage(Scene.RegionInfo.RegionID, fromID, fromName, message); } } } From 7e21c1eadf28e86b29fdd24b33e29950e195c6db Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Feb 2011 00:46:01 +0000 Subject: [PATCH 55/62] Hack in a crude temporary "estate show" command This will show the estate for each region, along with that estate's id and the estate owner. This is temporary because the command output might change. This commit also converts the estate module from the old to the new region module format --- .../World/Estate/EstateManagementCommands.cs | 74 ++++++++++++++++++- .../World/Estate/EstateManagementModule.cs | 40 +++++----- .../Framework/Interfaces/IEstateModule.cs | 2 +- 3 files changed, 94 insertions(+), 22 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs index 14f5b1ef94..f6d1a826c7 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementCommands.cs @@ -30,21 +30,29 @@ using System.Collections.Generic; using System.IO; using System.Reflection; using System.Security; +using System.Text; using log4net; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.CoreModules.Framework.InterfaceCommander; using OpenSim.Region.Framework.Interfaces; using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.World.Estate { + ///

+ /// Estate management console commands. + /// public class EstateManagementCommands { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); protected EstateManagementModule m_module; + protected Commander m_commander = new Commander("estate"); + public EstateManagementCommands(EstateManagementModule module) { m_module = module; @@ -52,20 +60,60 @@ namespace OpenSim.Region.CoreModules.World.Estate public void Initialise() { - m_module.Scene.AddCommand(this, "set terrain texture", + m_log.DebugFormat("[ESTATE MODULE]: Setting up estate commands for region {0}", m_module.Scene.RegionInfo.RegionName); + + m_module.Scene.AddCommand(m_module, "set terrain texture", "set terrain texture [] []", "Sets the terrain to , if or are specified, it will only " + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + " that coordinate.", consoleSetTerrainTexture); - m_module.Scene.AddCommand(this, "set terrain heights", + m_module.Scene.AddCommand(m_module, "set terrain heights", "set terrain heights [] []", "Sets the terrain texture heights on corner # to /, if or are specified, it will only " + "set it on regions with a matching coordinate. Specify -1 in or to wildcard" + " that coordinate. Corner # SW = 0, NW = 1, SE = 2, NE = 3.", consoleSetTerrainHeights); - } + + Command showCommand + = new Command("show", CommandIntentions.COMMAND_STATISTICAL, ShowEstatesCommand, "Shows all estates on the simulator."); + + m_commander.RegisterCommand("show", showCommand); + + m_module.Scene.RegisterModuleCommander(m_commander); + + m_module.Scene.EventManager.OnPluginConsole += EventManagerOnPluginConsole; + } + + public void Close() + { + m_module.Scene.EventManager.OnPluginConsole -= EventManagerOnPluginConsole; + m_module.Scene.UnregisterModuleCommander(m_commander.Name); + } + + /// + /// Processes commandline input. Do not call directly. + /// + /// Commandline arguments + protected void EventManagerOnPluginConsole(string[] args) + { + if (args[0] == "estate") + { + if (args.Length == 1) + { + m_commander.ProcessConsoleCommand("help", new string[0]); + return; + } + + string[] tmpArgs = new string[args.Length - 2]; + int i; + for (i = 2; i < args.Length; i++) + tmpArgs[i - 2] = args[i]; + + m_commander.ProcessConsoleCommand(args[1], tmpArgs); + } + } protected void consoleSetTerrainTexture(string module, string[] args) { @@ -152,5 +200,25 @@ namespace OpenSim.Region.CoreModules.World.Estate } } } + + protected void ShowEstatesCommand(Object[] args) + { + StringBuilder report = new StringBuilder(); + RegionInfo ri = m_module.Scene.RegionInfo; + EstateSettings es = ri.EstateSettings; + + report.AppendFormat("Estate information for region {0}\n", ri.RegionName); + report.AppendFormat( + "{0,-20} {1,-7} {2,-20}\n", + "Estate Name", + "ID", + "Owner"); + + report.AppendFormat( + "{0,-20} {1,-7} {2,-20}\n", + es.EstateName, es.EstateID, m_module.UserManager.GetUserName(es.EstateOwner)); + + MainConsole.Instance.Output(report.ToString()); + } } } \ No newline at end of file diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs index 54d3c6126d..57ab13550a 100644 --- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs @@ -31,6 +31,7 @@ using System.IO; using System.Reflection; using System.Security; using log4net; +using Mono.Addins; using Nini.Config; using OpenMetaverse; using OpenSim.Framework; @@ -39,15 +40,17 @@ using OpenSim.Region.Framework.Scenes; namespace OpenSim.Region.CoreModules.World.Estate { - public class EstateManagementModule : IEstateModule + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "EstateManagementModule")] + public class EstateManagementModule : IEstateModule, INonSharedRegionModule { private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); private delegate void LookupUUIDS(List uuidLst); public Scene Scene { get; private set; } + public IUserManagement UserManager { get; private set; } - protected EstateManagementCommands m_commands; + protected EstateManagementCommands m_commands; private EstateTerrainXferHandler TerrainUploader; @@ -895,9 +898,15 @@ namespace OpenSim.Region.CoreModules.World.Estate #endregion #region IRegionModule Members + + public string Name { get { return "EstateManagementModule"; } } + + public Type ReplaceableInterface { get { return null; } } - public void Initialise(Scene scene, IConfigSource source) - { + public void Initialise(IConfigSource source) {} + + public void AddRegion(Scene scene) + { Scene = scene; Scene.RegisterModuleInterface(this); Scene.EventManager.OnNewClient += EventManager_OnNewClient; @@ -906,26 +915,21 @@ namespace OpenSim.Region.CoreModules.World.Estate m_commands = new EstateManagementCommands(this); m_commands.Initialise(); } - - public void PostInitialise() + + public void RemoveRegion(Scene scene) {} + + public void RegionLoaded(Scene scene) { // Sets up the sun module based no the saved Estate and Region Settings // DO NOT REMOVE or the sun will stop working - Scene.TriggerEstateSunUpdate(); + scene.TriggerEstateSunUpdate(); + + UserManager = scene.RequestModuleInterface(); } - public void Close() + public void Close() { - } - - public string Name - { - get { return "EstateManagementModule"; } - } - - public bool IsSharedModule - { - get { return false; } + m_commands.Close(); } #endregion diff --git a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs index c850f7fd81..721f0eedea 100644 --- a/OpenSim/Region/Framework/Interfaces/IEstateModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IEstateModule.cs @@ -32,7 +32,7 @@ namespace OpenSim.Region.Framework.Interfaces public delegate void ChangeDelegate(UUID regionID); public delegate void MessageDelegate(UUID regionID, UUID fromID, string fromName, string message); - public interface IEstateModule : IRegionModule + public interface IEstateModule { event ChangeDelegate OnRegionInfoChange; event ChangeDelegate OnEstateInfoChange; From 03d82a5a8524cfba07d95456d59be6f35ab72048 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Feb 2011 01:08:56 +0000 Subject: [PATCH 56/62] Fix bug where "My estate" name was always used even if the user entered a different name on initial setup. Turns out we had stopped saving estate settings immediately after the name change. The scene constructor then reloade the settings and oblitereted the different name. This code could be more efficient since there's no reason for scene to reload the settings when they are already known to be valid. Thanks to Thoneve for the spot on this. --- .../LoadRegions/LoadRegionsPlugin.cs | 2 ++ OpenSim/Region/Application/OpenSimBase.cs | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs index 7ef0f5f455..f37c399050 100644 --- a/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs +++ b/OpenSim/ApplicationPlugins/LoadRegions/LoadRegionsPlugin.cs @@ -122,9 +122,11 @@ namespace OpenSim.ApplicationPlugins.LoadRegions m_log.Debug("[LOADREGIONS]: Creating Region: " + regionsToLoad[i].RegionName + " (ThreadID: " + Thread.CurrentThread.ManagedThreadId.ToString() + ")"); + m_openSim.PopulateRegionEstateInfo(regionsToLoad[i]); m_openSim.CreateRegion(regionsToLoad[i], true, out scene); regionsToLoad[i].EstateSettings.Save(); + if (scene != null) { m_newRegionCreatedHandler = OnNewRegionCreated; diff --git a/OpenSim/Region/Application/OpenSimBase.cs b/OpenSim/Region/Application/OpenSimBase.cs index 1652b82542..e950613e6b 100644 --- a/OpenSim/Region/Application/OpenSimBase.cs +++ b/OpenSim/Region/Application/OpenSimBase.cs @@ -795,9 +795,7 @@ namespace OpenSim /// /// Load the estate information for the provided RegionInfo object. /// - /// - /// A - /// + /// public void PopulateRegionEstateInfo(RegionInfo regInfo) { IEstateDataService estateDataService = EstateDataService; @@ -819,7 +817,13 @@ namespace OpenSim regInfo.EstateSettings = estateDataService.LoadEstateSettings(regInfo.RegionID, true); regInfo.EstateSettings.EstateName = MainConsole.Instance.CmdPrompt("New estate name", regInfo.EstateSettings.EstateName); - //regInfo.EstateSettings.Save(); + + // FIXME: Later on, the scene constructor will reload the estate settings no matter what. + // Therefore, we need to do an initial save here otherwise the new estate name will be reset + // back to the default. The reloading of estate settings by scene could be eliminated if it + // knows that the passed in settings in RegionInfo are already valid. Also, it might be + // possible to eliminate some additional later saves made by callers of this method. + regInfo.EstateSettings.Save(); break; } else From 9801bf03f8ab59e1fe8d439a216ca48a5bd68dc7 Mon Sep 17 00:00:00 2001 From: "Justin Clark-Casey (justincc)" Date: Sat, 12 Feb 2011 01:14:12 +0000 Subject: [PATCH 57/62] minor: add comment explaining that GetRegionsByName needs to stay in TeleportAgent for its side effects. --- .../Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 3f8735e0c1..688dfe4649 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -702,6 +702,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // and convert the regionName to the target region if (regionName.Contains(".") && regionName.Contains(":")) { + // Even though we use none of the results, we need to perform this call because it appears + // to have some the side effect of setting up hypergrid teleport locations. World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); // List regions = World.GridService.GetRegionsByName(World.RegionInfo.ScopeID, regionName, 1); From a8ced66e873d09bd1c9fd0cfe5d0487bf0ee27e7 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 12 Feb 2011 07:28:21 -0800 Subject: [PATCH 58/62] Improved error message on TP failure --- .../Framework/EntityTransfer/EntityTransferModule.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 80a804137f..1337143a31 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs @@ -243,7 +243,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer } catch (Exception e) { - m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0}\n{1}", e.Message, e.StackTrace); + m_log.WarnFormat("[ENTITY TRANSFER MODULE]: Exception on teleport: {0} {1}", e.Message, e.StackTrace); sp.ControllingClient.SendTeleportFailed("Internal error"); } } From 059e9eaf98c93c0befd84b99c88d9411ddd73817 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 12 Feb 2011 14:38:46 -0800 Subject: [PATCH 59/62] Fixed a couple of tests in the HttpServer. Not sure if this is enough. Mantis #5373 and #5384 --- bin/HttpServer_OpenSim.dll | Bin 115712 -> 115712 bytes bin/HttpServer_OpenSim.pdb | Bin 409088 -> 409088 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/bin/HttpServer_OpenSim.dll b/bin/HttpServer_OpenSim.dll index d7503a0915af2502889385f98811510dc784a79a..a7a1303c63a454d186cd99f206b470a6127d054c 100644 GIT binary patch delta 253 zcmVJK6BT57>P4?zU%KC zuW_Ci{0d{AudhKr6z0W1V3$w2hN9{1Vqu&J8PX> z_5ljB&;nCT0Wz~BPck3@F|${1cJU-eGBY?eG&wabIWsaaEi^JRGc7?eG(s&fLqjz= zGDAc|HZ?G}@n8XLJr7hk@*tBVLZM3x#gfg&P`7NJ0U#X%mIhaskGlaW0R*?Xy8%ZC D!ZK&R delta 253 zcmVGDbAF@n8XLJrBFeK6v$~N}dV%hHtfk^tWuD0U#X%{c8=EkGlaW0Ry+Wy8%ZC D8Y*fD diff --git a/bin/HttpServer_OpenSim.pdb b/bin/HttpServer_OpenSim.pdb index 4151588c66c50454ae010ae60b3cd6c3ae16444a..c6f3b235f1d96ddf38bce3e3b6b4e5ee4c7959d2 100644 GIT binary patch delta 9437 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 DS+?Da delta 12764 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 Rb8u;pEp$x+-x_VR{U0C!R&f9T From c169a62f557c9361da73da901e9f188d8b8bdeb8 Mon Sep 17 00:00:00 2001 From: Diva Canto Date: Sat, 12 Feb 2011 18:05:25 -0800 Subject: [PATCH 60/62] Typo --- OpenSim/Services/AssetService/AssetService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Services/AssetService/AssetService.cs b/OpenSim/Services/AssetService/AssetService.cs index 3fd2fcf4d6..a81af4355a 100644 --- a/OpenSim/Services/AssetService/AssetService.cs +++ b/OpenSim/Services/AssetService/AssetService.cs @@ -93,7 +93,7 @@ namespace OpenSim.Services.AssetService if (!UUID.TryParse(id, out assetID)) { - m_log.WarnFormat("[ASSET SERVICE]: Could not parse requested sset id {0}", id); + m_log.WarnFormat("[ASSET SERVICE]: Could not parse requested asset id {0}", id); return null; } From 19d3792278643af0d45dd09f338a33ad78a138b7 Mon Sep 17 00:00:00 2001 From: Marck Date: Sat, 12 Feb 2011 20:02:42 +0100 Subject: [PATCH 61/62] Fix and simplify QBasedComparer. Make parsing of qvalues independent from a system's language setting and ensure that the comparison adheres to a descending order. --- OpenSim/Framework/WebUtil.cs | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs index d731ac5882..1feeeb31e5 100644 --- a/OpenSim/Framework/WebUtil.cs +++ b/OpenSim/Framework/WebUtil.cs @@ -29,6 +29,7 @@ using System; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; +using System.Globalization; using System.IO; using System.Net; using System.Net.Security; @@ -557,34 +558,27 @@ namespace OpenSim.Framework { float qx = GetQ(x); float qy = GetQ(y); - if (qx < qy) - return -1; - if (qx == qy) - return 0; - return 1; + return qy.CompareTo(qx); // descending order } private float GetQ(Object o) { // Example: image/png;q=0.9 + float qvalue = 1F; if (o is String) { string mime = (string)o; - string[] parts = mime.Split(new char[] { ';' }); + string[] parts = mime.Split(';'); if (parts.Length > 1) { - string[] kvp = parts[1].Split(new char[] { '=' }); + string[] kvp = parts[1].Split('='); if (kvp.Length == 2 && kvp[0] == "q") - { - float qvalue = 1F; - float.TryParse(kvp[1], out qvalue); - return qvalue; - } + float.TryParse(kvp[1], NumberStyles.Number, CultureInfo.InvariantCulture, out qvalue); } } - return 1F; + return qvalue; } } From c75e916ccfb195554c5010ab4187c4d74b81c4e1 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Sun, 13 Feb 2011 00:30:43 -0500 Subject: [PATCH 62/62] Set filter to send proper rotations for root part This allows the root prim, alone or in a set, to send it's rotation. This fixes unsitting the avatar on sit-offsest type teleports where the sit target is in the root prim of a linkset. --- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 6a92378ea7..4d5eedfc95 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -2099,7 +2099,7 @@ namespace OpenSim.Region.Framework.Scenes { Quaternion newRot; - if (this.LinkNum == 0) + if (this.LinkNum == 0 || this.LinkNum == 1) { newRot = RotationOffset; }

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 _|mZq=p5y!6@m5c&HKc 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 literal 505771 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%0ApIaS(- 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