diff options
Diffstat (limited to 'OpenSim/Region')
15 files changed, 196 insertions, 86 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs index 1ee2a7b..c4b5aac 100644 --- a/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs +++ b/OpenSim/Region/CoreModules/Avatar/UserProfiles/UserProfileModule.cs | |||
@@ -484,6 +484,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
484 | { | 484 | { |
485 | remoteClient.SendAgentAlertMessage( | 485 | remoteClient.SendAgentAlertMessage( |
486 | "Error updating classified", false); | 486 | "Error updating classified", false); |
487 | return; | ||
487 | } | 488 | } |
488 | } | 489 | } |
489 | 490 | ||
@@ -510,6 +511,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
510 | { | 511 | { |
511 | remoteClient.SendAgentAlertMessage( | 512 | remoteClient.SendAgentAlertMessage( |
512 | "Error classified delete", false); | 513 | "Error classified delete", false); |
514 | return; | ||
513 | } | 515 | } |
514 | 516 | ||
515 | parameters = (OSDMap)Params; | 517 | parameters = (OSDMap)Params; |
@@ -612,6 +614,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
612 | { | 614 | { |
613 | remoteClient.SendAgentAlertMessage( | 615 | remoteClient.SendAgentAlertMessage( |
614 | "Error selecting pick", false); | 616 | "Error selecting pick", false); |
617 | return; | ||
615 | } | 618 | } |
616 | pick = (UserProfilePick) Pick; | 619 | pick = (UserProfilePick) Pick; |
617 | 620 | ||
@@ -714,6 +717,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
714 | { | 717 | { |
715 | remoteClient.SendAgentAlertMessage( | 718 | remoteClient.SendAgentAlertMessage( |
716 | "Error updating pick", false); | 719 | "Error updating pick", false); |
720 | return; | ||
717 | } | 721 | } |
718 | 722 | ||
719 | m_log.DebugFormat("[PROFILES]: Finish PickInfoUpdate {0} {1}", pick.Name, pick.PickId.ToString()); | 723 | m_log.DebugFormat("[PROFILES]: Finish PickInfoUpdate {0} {1}", pick.Name, pick.PickId.ToString()); |
@@ -740,6 +744,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
740 | { | 744 | { |
741 | remoteClient.SendAgentAlertMessage( | 745 | remoteClient.SendAgentAlertMessage( |
742 | "Error picks delete", false); | 746 | "Error picks delete", false); |
747 | return; | ||
743 | } | 748 | } |
744 | } | 749 | } |
745 | #endregion Picks | 750 | #endregion Picks |
@@ -807,6 +812,8 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
807 | object Note = note; | 812 | object Note = note; |
808 | if(!rpc.JsonRpcRequest(ref Note, "avatar_notes_update", serverURI, UUID.Random().ToString())) | 813 | if(!rpc.JsonRpcRequest(ref Note, "avatar_notes_update", serverURI, UUID.Random().ToString())) |
809 | { | 814 | { |
815 | remoteClient.SendAgentAlertMessage( | ||
816 | "Error updating note", false); | ||
810 | return; | 817 | return; |
811 | } | 818 | } |
812 | } | 819 | } |
@@ -916,6 +923,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
916 | { | 923 | { |
917 | remoteClient.SendAgentAlertMessage( | 924 | remoteClient.SendAgentAlertMessage( |
918 | "Error updating interests", false); | 925 | "Error updating interests", false); |
926 | return; | ||
919 | } | 927 | } |
920 | } | 928 | } |
921 | 929 | ||
@@ -1044,6 +1052,7 @@ namespace OpenSim.Region.CoreModules.Avatar.UserProfiles | |||
1044 | { | 1052 | { |
1045 | remoteClient.SendAgentAlertMessage( | 1053 | remoteClient.SendAgentAlertMessage( |
1046 | "Error updating properties", false); | 1054 | "Error updating properties", false); |
1055 | return; | ||
1047 | } | 1056 | } |
1048 | 1057 | ||
1049 | RequestAvatarProperties(remoteClient, newProfile.ID); | 1058 | RequestAvatarProperties(remoteClient, newProfile.ID); |
diff --git a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs index 539367d..e583590 100644 --- a/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs +++ b/OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.cs | |||
@@ -761,12 +761,12 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
761 | string reason; | 761 | string reason; |
762 | string version; | 762 | string version; |
763 | if (!Scene.SimulationService.QueryAccess( | 763 | if (!Scene.SimulationService.QueryAccess( |
764 | finalDestination, sp.ControllingClient.AgentId, homeURI, position, out version, out reason)) | 764 | finalDestination, sp.ControllingClient.AgentId, homeURI, true, position, out version, out reason)) |
765 | { | 765 | { |
766 | sp.ControllingClient.SendTeleportFailed(reason); | 766 | sp.ControllingClient.SendTeleportFailed(reason); |
767 | 767 | ||
768 | m_log.DebugFormat( | 768 | m_log.DebugFormat( |
769 | "[ENTITY TRANSFER MODULE]: {0} was stopped from teleporting from {1} to {2} because {3}", | 769 | "[ENTITY TRANSFER MODULE]: {0} was stopped from teleporting from {1} to {2} because: {3}", |
770 | sp.Name, sp.Scene.Name, finalDestination.RegionName, reason); | 770 | sp.Name, sp.Scene.Name, finalDestination.RegionName, reason); |
771 | 771 | ||
772 | return; | 772 | return; |
@@ -1510,7 +1510,7 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer | |||
1510 | 1510 | ||
1511 | // Check to see if we have access to the target region. | 1511 | // Check to see if we have access to the target region. |
1512 | if (neighbourRegion != null | 1512 | if (neighbourRegion != null |
1513 | && !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, newpos, out version, out failureReason)) | 1513 | && !scene.SimulationService.QueryAccess(neighbourRegion, agentID, homeURI, false, newpos, out version, out failureReason)) |
1514 | { | 1514 | { |
1515 | // remember banned | 1515 | // remember banned |
1516 | m_bannedRegionCache.Add(neighbourRegion.RegionHandle, agentID); | 1516 | m_bannedRegionCache.Add(neighbourRegion.RegionHandle, agentID); |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs index 71570da..5e831cc 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/HGInventoryAccessModule.cs | |||
@@ -311,9 +311,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
311 | SceneObjectGroup sog = base.RezObject(remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, | 311 | SceneObjectGroup sog = base.RezObject(remoteClient, itemID, RayEnd, RayStart, RayTargetID, BypassRayCast, RayEndIsIntersection, |
312 | RezSelected, RemoveItem, fromTaskID, attachment); | 312 | RezSelected, RemoveItem, fromTaskID, attachment); |
313 | 313 | ||
314 | if (sog == null) | ||
315 | remoteClient.SendAgentAlertMessage("Unable to rez: problem accessing inventory or locating assets", false); | ||
316 | |||
317 | return sog; | 314 | return sog; |
318 | 315 | ||
319 | } | 316 | } |
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 6e48fcc..c4a42bc 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -797,12 +797,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
797 | m_log.WarnFormat( | 797 | m_log.WarnFormat( |
798 | "[InventoryAccessModule]: Could not find asset {0} for item {1} {2} for {3} in RezObject()", | 798 | "[InventoryAccessModule]: Could not find asset {0} for item {1} {2} for {3} in RezObject()", |
799 | assetID, item.Name, item.ID, remoteClient.Name); | 799 | assetID, item.Name, item.ID, remoteClient.Name); |
800 | remoteClient.SendAgentAlertMessage(string.Format("Unable to rez: could not find asset {0} for item {1}.", assetID, item.Name), false); | ||
800 | } | 801 | } |
801 | else | 802 | else |
802 | { | 803 | { |
803 | m_log.WarnFormat( | 804 | m_log.WarnFormat( |
804 | "[INVENTORY ACCESS MODULE]: Could not find asset {0} for {1} in RezObject()", | 805 | "[INVENTORY ACCESS MODULE]: Could not find asset {0} for {1} in RezObject()", |
805 | assetID, remoteClient.Name); | 806 | assetID, remoteClient.Name); |
807 | remoteClient.SendAgentAlertMessage(string.Format("Unable to rez: could not find asset {0}.", assetID), false); | ||
806 | } | 808 | } |
807 | 809 | ||
808 | return null; | 810 | return null; |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs index 4470799..93dff1f 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Authorization/AuthorizationService.cs | |||
@@ -89,35 +89,43 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Authorization | |||
89 | public bool IsAuthorizedForRegion( | 89 | public bool IsAuthorizedForRegion( |
90 | string user, string firstName, string lastName, string regionID, out string message) | 90 | string user, string firstName, string lastName, string regionID, out string message) |
91 | { | 91 | { |
92 | message = "authorized"; | ||
93 | |||
94 | // This should not happen | 92 | // This should not happen |
95 | if (m_Scene.RegionInfo.RegionID.ToString() != regionID) | 93 | if (m_Scene.RegionInfo.RegionID.ToString() != regionID) |
96 | { | 94 | { |
97 | m_log.WarnFormat("[AuthorizationService]: Service for region {0} received request to authorize for region {1}", | 95 | m_log.WarnFormat("[AuthorizationService]: Service for region {0} received request to authorize for region {1}", |
98 | m_Scene.RegionInfo.RegionID, regionID); | 96 | m_Scene.RegionInfo.RegionID, regionID); |
99 | return true; | 97 | message = string.Format("Region {0} received request to authorize for region {1}", m_Scene.RegionInfo.RegionID, regionID); |
98 | return false; | ||
100 | } | 99 | } |
101 | 100 | ||
102 | if (m_accessValue == AccessFlags.None) | 101 | if (m_accessValue == AccessFlags.None) |
102 | { | ||
103 | message = "Authorized"; | ||
103 | return true; | 104 | return true; |
105 | } | ||
104 | 106 | ||
105 | UUID userID = new UUID(user); | 107 | UUID userID = new UUID(user); |
106 | bool authorized = true; | 108 | |
107 | if ((m_accessValue & AccessFlags.DisallowForeigners) == AccessFlags.DisallowForeigners) | 109 | if ((m_accessValue & AccessFlags.DisallowForeigners) != 0) |
108 | { | 110 | { |
109 | authorized = m_UserManagement.IsLocalGridUser(userID); | 111 | if (!m_UserManagement.IsLocalGridUser(userID)) |
110 | if (!authorized) | 112 | { |
111 | message = "no foreigner users allowed in this region"; | 113 | message = "No foreign users allowed in this region"; |
114 | return false; | ||
115 | } | ||
112 | } | 116 | } |
113 | if (authorized && (m_accessValue & AccessFlags.DisallowResidents) == AccessFlags.DisallowResidents) | 117 | |
118 | if ((m_accessValue & AccessFlags.DisallowResidents) != 0) | ||
114 | { | 119 | { |
115 | authorized = m_Scene.Permissions.IsGod(userID) | m_Scene.Permissions.IsAdministrator(userID); | 120 | if (!(m_Scene.Permissions.IsGod(userID) || m_Scene.Permissions.IsAdministrator(userID))) |
116 | if (!authorized) | 121 | { |
117 | message = "only Admins and Managers allowed in this region"; | 122 | message = "Only Admins and Managers allowed in this region"; |
123 | return false; | ||
124 | } | ||
118 | } | 125 | } |
119 | 126 | ||
120 | return authorized; | 127 | message = "Authorized"; |
128 | return true; | ||
121 | } | 129 | } |
122 | 130 | ||
123 | } | 131 | } |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs index 3348b42..926ef05 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/LocalSimulationConnector.cs | |||
@@ -264,7 +264,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
264 | return true; | 264 | return true; |
265 | } | 265 | } |
266 | 266 | ||
267 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, Vector3 position, out string version, out string reason) | 267 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string version, out string reason) |
268 | { | 268 | { |
269 | reason = "Communications failure"; | 269 | reason = "Communications failure"; |
270 | version = ServiceVersion; | 270 | version = ServiceVersion; |
@@ -277,7 +277,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
277 | // "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate", | 277 | // "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate", |
278 | // s.RegionInfo.RegionName, destination.RegionHandle); | 278 | // s.RegionInfo.RegionName, destination.RegionHandle); |
279 | 279 | ||
280 | return m_scenes[destination.RegionID].QueryAccess(agentID, agentHomeURI, position, out reason); | 280 | return m_scenes[destination.RegionID].QueryAccess(agentID, agentHomeURI, viaTeleport, position, out reason); |
281 | } | 281 | } |
282 | 282 | ||
283 | //m_log.Debug("[LOCAL COMMS]: region not found for QueryAccess"); | 283 | //m_log.Debug("[LOCAL COMMS]: region not found for QueryAccess"); |
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs index 8436488..0444e49 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Simulation/RemoteSimulationConnector.cs | |||
@@ -207,7 +207,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
207 | return m_remoteConnector.UpdateAgent(destination, cAgentData); | 207 | return m_remoteConnector.UpdateAgent(destination, cAgentData); |
208 | } | 208 | } |
209 | 209 | ||
210 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, Vector3 position, out string version, out string reason) | 210 | public bool QueryAccess(GridRegion destination, UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string version, out string reason) |
211 | { | 211 | { |
212 | reason = "Communications failure"; | 212 | reason = "Communications failure"; |
213 | version = "Unknown"; | 213 | version = "Unknown"; |
@@ -216,12 +216,12 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation | |||
216 | return false; | 216 | return false; |
217 | 217 | ||
218 | // Try local first | 218 | // Try local first |
219 | if (m_localBackend.QueryAccess(destination, agentID, agentHomeURI, position, out version, out reason)) | 219 | if (m_localBackend.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, out version, out reason)) |
220 | return true; | 220 | return true; |
221 | 221 | ||
222 | // else do the remote thing | 222 | // else do the remote thing |
223 | if (!m_localBackend.IsLocalRegion(destination.RegionID)) | 223 | if (!m_localBackend.IsLocalRegion(destination.RegionID)) |
224 | return m_remoteConnector.QueryAccess(destination, agentID, agentHomeURI, position, out version, out reason); | 224 | return m_remoteConnector.QueryAccess(destination, agentID, agentHomeURI, viaTeleport, position, out version, out reason); |
225 | 225 | ||
226 | return false; | 226 | return false; |
227 | } | 227 | } |
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs index c35f6b7..1437b1b 100644 --- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs +++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs | |||
@@ -143,28 +143,32 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
143 | } | 143 | } |
144 | 144 | ||
145 | 145 | ||
146 | //m_log.DebugFormat("MAP NAME=({0})", mapName); | 146 | List<GridRegion> regionInfos = m_scene.GridService.GetRegionsByName(m_scene.RegionInfo.ScopeID, mapName, 20); |
147 | 147 | ||
148 | // Hack to get around the fact that ll V3 now drops the port from the | ||
149 | // map name. See https://jira.secondlife.com/browse/VWR-28570 | ||
150 | // | ||
151 | // Caller, use this magic form instead: | ||
152 | // secondlife://http|!!mygrid.com|8002|Region+Name/128/128 | ||
153 | // or url encode if possible. | ||
154 | // the hacks we do with this viewer... | ||
155 | // | ||
156 | string mapNameOrig = mapName; | 148 | string mapNameOrig = mapName; |
157 | if (mapName.Contains("|")) | 149 | if (regionInfos.Count == 0) |
158 | mapName = mapName.Replace('|', ':'); | 150 | { |
159 | if (mapName.Contains("+")) | 151 | // Hack to get around the fact that ll V3 now drops the port from the |
160 | mapName = mapName.Replace('+', ' '); | 152 | // map name. See https://jira.secondlife.com/browse/VWR-28570 |
161 | if (mapName.Contains("!")) | 153 | // |
162 | mapName = mapName.Replace('!', '/'); | 154 | // Caller, use this magic form instead: |
155 | // secondlife://http|!!mygrid.com|8002|Region+Name/128/128 | ||
156 | // or url encode if possible. | ||
157 | // the hacks we do with this viewer... | ||
158 | // | ||
159 | if (mapName.Contains("|")) | ||
160 | mapName = mapName.Replace('|', ':'); | ||
161 | if (mapName.Contains("+")) | ||
162 | mapName = mapName.Replace('+', ' '); | ||
163 | if (mapName.Contains("!")) | ||
164 | mapName = mapName.Replace('!', '/'); | ||
165 | |||
166 | if (mapName != mapNameOrig) | ||
167 | regionInfos = m_scene.GridService.GetRegionsByName(m_scene.RegionInfo.ScopeID, mapName, 20); | ||
168 | } | ||
163 | 169 | ||
164 | // try to fetch from GridServer | ||
165 | List<GridRegion> regionInfos = m_scene.GridService.GetRegionsByName(m_scene.RegionInfo.ScopeID, mapName, 20); | ||
166 | |||
167 | m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions. Flags={2}", mapName, regionInfos.Count, flags); | 170 | m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions. Flags={2}", mapName, regionInfos.Count, flags); |
171 | |||
168 | if (regionInfos.Count > 0) | 172 | if (regionInfos.Count > 0) |
169 | { | 173 | { |
170 | foreach (GridRegion info in regionInfos) | 174 | foreach (GridRegion info in regionInfos) |
@@ -178,7 +182,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap | |||
178 | data.MapImageId = info.TerrainImage; | 182 | data.MapImageId = info.TerrainImage; |
179 | // ugh! V2-3 is very sensitive about the result being | 183 | // ugh! V2-3 is very sensitive about the result being |
180 | // exactly the same as the requested name | 184 | // exactly the same as the requested name |
181 | if (regionInfos.Count == 1 && mapNameOrig.Contains("|") || mapNameOrig.Contains("+")) | 185 | if (regionInfos.Count == 1 && (mapName != mapNameOrig)) |
182 | data.Name = mapNameOrig; | 186 | data.Name = mapNameOrig; |
183 | else | 187 | else |
184 | data.Name = info.RegionName; | 188 | data.Name = info.RegionName; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index e6887b4..3b8fbfd 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -3865,7 +3865,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3865 | if (!AuthorizationService.IsAuthorizedForRegion( | 3865 | if (!AuthorizationService.IsAuthorizedForRegion( |
3866 | agent.AgentID.ToString(), agent.firstname, agent.lastname, RegionInfo.RegionID.ToString(), out reason)) | 3866 | agent.AgentID.ToString(), agent.firstname, agent.lastname, RegionInfo.RegionID.ToString(), out reason)) |
3867 | { | 3867 | { |
3868 | m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because {4}", | 3868 | m_log.WarnFormat("[CONNECTION BEGIN]: Denied access to: {0} ({1} {2}) at {3} because: {4}", |
3869 | agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName, reason); | 3869 | agent.AgentID, agent.firstname, agent.lastname, RegionInfo.RegionName, reason); |
3870 | 3870 | ||
3871 | return false; | 3871 | return false; |
@@ -5463,9 +5463,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
5463 | /// <param name='position'></param> | 5463 | /// <param name='position'></param> |
5464 | /// <param name='reason'></param> | 5464 | /// <param name='reason'></param> |
5465 | /// <returns></returns> | 5465 | /// <returns></returns> |
5466 | public bool QueryAccess(UUID agentID, string agentHomeURI, Vector3 position, out string reason) | 5466 | public bool QueryAccess(UUID agentID, string agentHomeURI, bool viaTeleport, Vector3 position, out string reason) |
5467 | { | 5467 | { |
5468 | reason = "You are banned from the region"; | 5468 | reason = string.Empty; |
5469 | 5469 | ||
5470 | if (Permissions.IsGod(agentID)) | 5470 | if (Permissions.IsGod(agentID)) |
5471 | { | 5471 | { |
@@ -5525,10 +5525,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
5525 | catch (Exception e) | 5525 | catch (Exception e) |
5526 | { | 5526 | { |
5527 | m_log.DebugFormat("[SCENE]: Exception authorizing agent: {0} "+ e.StackTrace, e.Message); | 5527 | m_log.DebugFormat("[SCENE]: Exception authorizing agent: {0} "+ e.StackTrace, e.Message); |
5528 | reason = "Error authorizing agent: " + e.Message; | ||
5528 | return false; | 5529 | return false; |
5529 | } | 5530 | } |
5530 | 5531 | ||
5531 | if (position == Vector3.Zero) // Teleport | 5532 | if (viaTeleport) |
5532 | { | 5533 | { |
5533 | if (!RegionInfo.EstateSettings.AllowDirectTeleport) | 5534 | if (!RegionInfo.EstateSettings.AllowDirectTeleport) |
5534 | { | 5535 | { |
@@ -5568,6 +5569,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
5568 | if (!TestLandRestrictions(agentID, out reason, ref posX, ref posY)) | 5569 | if (!TestLandRestrictions(agentID, out reason, ref posX, ref posY)) |
5569 | { | 5570 | { |
5570 | // m_log.DebugFormat("[SCENE]: Denying {0} because they are banned on all parcels", agentID); | 5571 | // m_log.DebugFormat("[SCENE]: Denying {0} because they are banned on all parcels", agentID); |
5572 | reason = "You are banned from the region on all parcels"; | ||
5571 | return false; | 5573 | return false; |
5572 | } | 5574 | } |
5573 | } | 5575 | } |
@@ -5575,13 +5577,22 @@ namespace OpenSim.Region.Framework.Scenes | |||
5575 | { | 5577 | { |
5576 | ILandObject land = LandChannel.GetLandObject(position.X, position.Y); | 5578 | ILandObject land = LandChannel.GetLandObject(position.X, position.Y); |
5577 | if (land == null) | 5579 | if (land == null) |
5580 | { | ||
5581 | reason = "No parcel found"; | ||
5578 | return false; | 5582 | return false; |
5583 | } | ||
5579 | 5584 | ||
5580 | bool banned = land.IsBannedFromLand(agentID); | 5585 | bool banned = land.IsBannedFromLand(agentID); |
5581 | bool restricted = land.IsRestrictedFromLand(agentID); | 5586 | bool restricted = land.IsRestrictedFromLand(agentID); |
5582 | 5587 | ||
5583 | if (banned || restricted) | 5588 | if (banned || restricted) |
5589 | { | ||
5590 | if (banned) | ||
5591 | reason = "You are banned from the parcel"; | ||
5592 | else | ||
5593 | reason = "The parcel is restricted"; | ||
5584 | return false; | 5594 | return false; |
5595 | } | ||
5585 | } | 5596 | } |
5586 | 5597 | ||
5587 | reason = String.Empty; | 5598 | reason = String.Empty; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index fb8ecd5..75e1cbb 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -751,7 +751,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
751 | Vector3 bbox; | 751 | Vector3 bbox; |
752 | float offsetHeight; | 752 | float offsetHeight; |
753 | 753 | ||
754 | bool single = m_part.ParentGroup.Scene.GetObjectsToRez(rezAsset.Data, false, out objlist, out veclist, out bbox, out offsetHeight); | 754 | m_part.ParentGroup.Scene.GetObjectsToRez(rezAsset.Data, false, out objlist, out veclist, out bbox, out offsetHeight); |
755 | 755 | ||
756 | for (int i = 0; i < objlist.Count; i++) | 756 | for (int i = 0; i < objlist.Count; i++) |
757 | { | 757 | { |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index dd4bbe9..398d394 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -208,7 +208,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
208 | // private int m_lastColCount = -1; //KF: Look for Collision chnages | 208 | // private int m_lastColCount = -1; //KF: Look for Collision chnages |
209 | // private int m_updateCount = 0; //KF: Update Anims for a while | 209 | // private int m_updateCount = 0; //KF: Update Anims for a while |
210 | // private static readonly int UPDATE_COUNT = 10; // how many frames to update for | 210 | // private static readonly int UPDATE_COUNT = 10; // how many frames to update for |
211 | private List<uint> m_lastColliders = new List<uint>(); | ||
212 | 211 | ||
213 | private TeleportFlags m_teleportFlags; | 212 | private TeleportFlags m_teleportFlags; |
214 | public TeleportFlags TeleportFlags | 213 | public TeleportFlags TeleportFlags |
@@ -271,8 +270,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
271 | //private int m_moveToPositionStateStatus; | 270 | //private int m_moveToPositionStateStatus; |
272 | //***************************************************** | 271 | //***************************************************** |
273 | 272 | ||
274 | private object m_collisionEventLock = new Object(); | ||
275 | |||
276 | private int m_movementAnimationUpdateCounter = 0; | 273 | private int m_movementAnimationUpdateCounter = 0; |
277 | 274 | ||
278 | public Vector3 PrevSitOffset { get; set; } | 275 | public Vector3 PrevSitOffset { get; set; } |
@@ -3777,10 +3774,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
3777 | if (!IsChildAgent) | 3774 | if (!IsChildAgent) |
3778 | return; | 3775 | return; |
3779 | 3776 | ||
3780 | //m_log.Debug(" >>> ChildAgentPositionUpdate <<< " + rRegionX + "-" + rRegionY); | 3777 | // m_log.DebugFormat( |
3778 | // "[SCENE PRESENCE]: ChildAgentPositionUpdate for {0} in {1}, tRegion {2},{3}, rRegion {4},{5}, pos {6}", | ||
3779 | // Name, Scene.Name, tRegionX, tRegionY, rRegionX, rRegionY, cAgentData.Position); | ||
3780 | |||
3781 | // Find the distance (in meters) between the two regions | 3781 | // Find the distance (in meters) between the two regions |
3782 | uint shiftx = Util.RegionToWorldLoc(rRegionX - tRegionX); | 3782 | // XXX: We cannot use Util.RegionLocToHandle() here because a negative value will silently overflow the |
3783 | uint shifty = Util.RegionToWorldLoc(rRegionY - tRegionY); | 3783 | // uint |
3784 | int shiftx = (int)(((int)rRegionX - (int)tRegionX) * Constants.RegionSize); | ||
3785 | int shifty = (int)(((int)rRegionY - (int)tRegionY) * Constants.RegionSize); | ||
3784 | 3786 | ||
3785 | Vector3 offset = new Vector3(shiftx, shifty, 0f); | 3787 | Vector3 offset = new Vector3(shiftx, shifty, 0f); |
3786 | 3788 | ||
diff --git a/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs b/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs index e797207..396f1e8 100644 --- a/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs +++ b/OpenSim/Region/Framework/Scenes/TerrainCompressor.cs | |||
@@ -45,7 +45,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
45 | { | 45 | { |
46 | public static class OpenSimTerrainCompressor | 46 | public static class OpenSimTerrainCompressor |
47 | { | 47 | { |
48 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 48 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
49 | 49 | ||
50 | #pragma warning disable 414 | 50 | #pragma warning disable 414 |
51 | private static string LogHeader = "[TERRAIN COMPRESSOR]"; | 51 | private static string LogHeader = "[TERRAIN COMPRESSOR]"; |
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs index 26b70a1..e1b6abb 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsMessagingModule.cs | |||
@@ -55,8 +55,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
55 | private IGroupsServicesConnector m_groupData = null; | 55 | private IGroupsServicesConnector m_groupData = null; |
56 | 56 | ||
57 | // Config Options | 57 | // Config Options |
58 | private bool m_groupMessagingEnabled = false; | 58 | private bool m_groupMessagingEnabled; |
59 | private bool m_debugEnabled = true; | 59 | private bool m_debugEnabled; |
60 | 60 | ||
61 | /// <summary> | 61 | /// <summary> |
62 | /// If enabled, module only tries to send group IMs to online users by querying cached presence information. | 62 | /// If enabled, module only tries to send group IMs to online users by querying cached presence information. |
@@ -113,7 +113,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
113 | if (m_messageOnlineAgentsOnly) | 113 | if (m_messageOnlineAgentsOnly) |
114 | m_usersOnlineCache = new ExpiringCache<UUID, PresenceInfo[]>(); | 114 | m_usersOnlineCache = new ExpiringCache<UUID, PresenceInfo[]>(); |
115 | 115 | ||
116 | m_debugEnabled = groupsConfig.GetBoolean("DebugEnabled", true); | 116 | m_debugEnabled = groupsConfig.GetBoolean("MessagingDebugEnabled", m_debugEnabled); |
117 | } | 117 | } |
118 | 118 | ||
119 | m_log.InfoFormat( | 119 | m_log.InfoFormat( |
@@ -127,6 +127,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
127 | return; | 127 | return; |
128 | 128 | ||
129 | scene.RegisterModuleInterface<IGroupsMessagingModule>(this); | 129 | scene.RegisterModuleInterface<IGroupsMessagingModule>(this); |
130 | |||
131 | scene.AddCommand( | ||
132 | "Debug", | ||
133 | this, | ||
134 | "debug groups messaging verbose", | ||
135 | "debug groups messaging verbose <true|false>", | ||
136 | "This setting turns on very verbose groups messaging debugging", | ||
137 | HandleDebugGroupsMessagingVerbose); | ||
130 | } | 138 | } |
131 | 139 | ||
132 | public void RegionLoaded(Scene scene) | 140 | public void RegionLoaded(Scene scene) |
@@ -218,6 +226,26 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
218 | 226 | ||
219 | #endregion | 227 | #endregion |
220 | 228 | ||
229 | private void HandleDebugGroupsMessagingVerbose(object modules, string[] args) | ||
230 | { | ||
231 | if (args.Length < 5) | ||
232 | { | ||
233 | MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>"); | ||
234 | return; | ||
235 | } | ||
236 | |||
237 | bool verbose = false; | ||
238 | if (!bool.TryParse(args[4], out verbose)) | ||
239 | { | ||
240 | MainConsole.Instance.Output("Usage: debug groups messaging verbose <true|false>"); | ||
241 | return; | ||
242 | } | ||
243 | |||
244 | m_debugEnabled = verbose; | ||
245 | |||
246 | MainConsole.Instance.OutputFormat("{0} verbose logging set to {1}", Name, m_debugEnabled); | ||
247 | } | ||
248 | |||
221 | /// <summary> | 249 | /// <summary> |
222 | /// Not really needed, but does confirm that the group exists. | 250 | /// Not really needed, but does confirm that the group exists. |
223 | /// </summary> | 251 | /// </summary> |
@@ -246,6 +274,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
246 | public void SendMessageToGroup( | 274 | public void SendMessageToGroup( |
247 | GridInstantMessage im, UUID groupID, UUID sendingAgentForGroupCalls, Func<GroupMembersData, bool> sendCondition) | 275 | GridInstantMessage im, UUID groupID, UUID sendingAgentForGroupCalls, Func<GroupMembersData, bool> sendCondition) |
248 | { | 276 | { |
277 | int requestStartTick = Environment.TickCount; | ||
278 | |||
249 | List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(sendingAgentForGroupCalls, groupID); | 279 | List<GroupMembersData> groupMembers = m_groupData.GetGroupMembers(sendingAgentForGroupCalls, groupID); |
250 | int groupMembersCount = groupMembers.Count; | 280 | int groupMembersCount = groupMembers.Count; |
251 | HashSet<string> attemptDeliveryUuidSet = null; | 281 | HashSet<string> attemptDeliveryUuidSet = null; |
@@ -285,9 +315,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
285 | m_log.DebugFormat( | 315 | m_log.DebugFormat( |
286 | "[GROUPS-MESSAGING]: SendMessageToGroup called for group {0} with {1} visible members", | 316 | "[GROUPS-MESSAGING]: SendMessageToGroup called for group {0} with {1} visible members", |
287 | groupID, groupMembers.Count); | 317 | groupID, groupMembers.Count); |
288 | } | 318 | } |
289 | |||
290 | int requestStartTick = Environment.TickCount; | ||
291 | 319 | ||
292 | foreach (GroupMembersData member in groupMembers) | 320 | foreach (GroupMembersData member in groupMembers) |
293 | { | 321 | { |
@@ -315,7 +343,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
315 | 343 | ||
316 | // Copy Message | 344 | // Copy Message |
317 | GridInstantMessage msg = new GridInstantMessage(); | 345 | GridInstantMessage msg = new GridInstantMessage(); |
318 | msg.imSessionID = groupID.Guid; | 346 | msg.imSessionID = im.imSessionID; |
319 | msg.fromAgentName = im.fromAgentName; | 347 | msg.fromAgentName = im.fromAgentName; |
320 | msg.message = im.message; | 348 | msg.message = im.message; |
321 | msg.dialog = im.dialog; | 349 | msg.dialog = im.dialog; |
@@ -336,27 +364,45 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
336 | IClientAPI client = GetActiveClient(member.AgentID); | 364 | IClientAPI client = GetActiveClient(member.AgentID); |
337 | if (client == null) | 365 | if (client == null) |
338 | { | 366 | { |
367 | int startTick = Environment.TickCount; | ||
368 | |||
339 | // If they're not local, forward across the grid | 369 | // If they're not local, forward across the grid |
340 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Delivering to {0} via Grid", member.AgentID); | ||
341 | m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { }); | 370 | m_msgTransferModule.SendInstantMessage(msg, delegate(bool success) { }); |
371 | |||
372 | if (m_debugEnabled) | ||
373 | m_log.DebugFormat( | ||
374 | "[GROUPS-MESSAGING]: Delivering to {0} via grid took {1} ms", | ||
375 | member.AgentID, Environment.TickCount - startTick); | ||
342 | } | 376 | } |
343 | else | 377 | else |
344 | { | 378 | { |
345 | // Deliver locally, directly | 379 | int startTick = Environment.TickCount; |
346 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Passing to ProcessMessageFromGroupSession to deliver to {0} locally", client.Name); | 380 | |
347 | ProcessMessageFromGroupSession(msg, client); | 381 | ProcessMessageFromGroupSession(msg, client); |
382 | |||
383 | // Deliver locally, directly | ||
384 | if (m_debugEnabled) | ||
385 | m_log.DebugFormat( | ||
386 | "[GROUPS-MESSAGING]: Delivering to {0} locally took {1} ms", | ||
387 | member.AgentID, Environment.TickCount - startTick); | ||
348 | } | 388 | } |
349 | } | 389 | } |
350 | else | 390 | else |
351 | { | 391 | { |
392 | int startTick = Environment.TickCount; | ||
393 | |||
352 | m_msgTransferModule.HandleUndeliverableMessage(msg, delegate(bool success) { }); | 394 | m_msgTransferModule.HandleUndeliverableMessage(msg, delegate(bool success) { }); |
395 | |||
396 | if (m_debugEnabled) | ||
397 | m_log.DebugFormat( | ||
398 | "[GROUPS-MESSAGING]: Handling undeliverable message for {0} took {1} ms", | ||
399 | member.AgentID, Environment.TickCount - startTick); | ||
353 | } | 400 | } |
354 | } | 401 | } |
355 | 402 | ||
356 | // Temporary for assessing how long it still takes to send messages to large online groups. | 403 | if (m_debugEnabled) |
357 | if (m_messageOnlineAgentsOnly) | ||
358 | m_log.DebugFormat( | 404 | m_log.DebugFormat( |
359 | "[GROUPS-MESSAGING]: SendMessageToGroup for group {0} with {1} members, {2} candidates for delivery took {3}ms", | 405 | "[GROUPS-MESSAGING]: Total SendMessageToGroup for group {0} with {1} members, {2} candidates for delivery took {3} ms", |
360 | groupID, groupMembersCount, attemptDeliveryUuidSet.Count(), Environment.TickCount - requestStartTick); | 406 | groupID, groupMembersCount, attemptDeliveryUuidSet.Count(), Environment.TickCount - requestStartTick); |
361 | } | 407 | } |
362 | 408 | ||
@@ -420,7 +466,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
420 | 466 | ||
421 | private void ProcessMessageFromGroupSession(GridInstantMessage msg, IClientAPI client) | 467 | private void ProcessMessageFromGroupSession(GridInstantMessage msg, IClientAPI client) |
422 | { | 468 | { |
423 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS-MESSAGING]: Session message from {0} going to agent {1}", msg.fromAgentName, msg.toAgentID); | 469 | if (m_debugEnabled) |
470 | m_log.DebugFormat( | ||
471 | "[GROUPS-MESSAGING]: Session message from {0} going to agent {1}, sessionID {2}, type {3}", | ||
472 | msg.fromAgentName, msg.toAgentID, msg.imSessionID, (InstantMessageDialog)msg.dialog); | ||
424 | 473 | ||
425 | UUID AgentID = new UUID(msg.fromAgentID); | 474 | UUID AgentID = new UUID(msg.fromAgentID); |
426 | UUID GroupID = new UUID(msg.imSessionID); | 475 | UUID GroupID = new UUID(msg.imSessionID); |
@@ -588,15 +637,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
588 | // Don't log any normal IMs (privacy!) | 637 | // Don't log any normal IMs (privacy!) |
589 | if (m_debugEnabled && im.dialog != (byte)InstantMessageDialog.MessageFromAgent) | 638 | if (m_debugEnabled && im.dialog != (byte)InstantMessageDialog.MessageFromAgent) |
590 | { | 639 | { |
591 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: fromGroup({0})", im.fromGroup ? "True" : "False"); | 640 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: fromGroup({0})", im.fromGroup ? "True" : "False"); |
592 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: Dialog({0})", (InstantMessageDialog)im.dialog); | 641 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: Dialog({0})", (InstantMessageDialog)im.dialog); |
593 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: fromAgentID({0})", im.fromAgentID); | 642 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: fromAgentID({0})", im.fromAgentID); |
594 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: fromAgentName({0})", im.fromAgentName); | 643 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: fromAgentName({0})", im.fromAgentName); |
595 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: imSessionID({0})", im.imSessionID); | 644 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: imSessionID({0})", im.imSessionID); |
596 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: message({0})", im.message); | 645 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: message({0})", im.message); |
597 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: offline({0})", im.offline); | 646 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: offline({0})", im.offline); |
598 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: toAgentID({0})", im.toAgentID); | 647 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: toAgentID({0})", im.toAgentID); |
599 | m_log.WarnFormat("[GROUPS-MESSAGING]: IM: binaryBucket({0})", OpenMetaverse.Utils.BytesToHexString(im.binaryBucket, "BinaryBucket")); | 648 | m_log.DebugFormat("[GROUPS-MESSAGING]: IM: binaryBucket({0})", OpenMetaverse.Utils.BytesToHexString(im.binaryBucket, "BinaryBucket")); |
600 | } | 649 | } |
601 | } | 650 | } |
602 | 651 | ||
@@ -607,7 +656,8 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
607 | /// </summary> | 656 | /// </summary> |
608 | private IClientAPI GetActiveClient(UUID agentID) | 657 | private IClientAPI GetActiveClient(UUID agentID) |
609 | { | 658 | { |
610 | if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Looking for local client {0}", agentID); | 659 | if (m_debugEnabled) |
660 | m_log.DebugFormat("[GROUPS-MESSAGING]: Looking for local client {0}", agentID); | ||
611 | 661 | ||
612 | IClientAPI child = null; | 662 | IClientAPI child = null; |
613 | 663 | ||
@@ -619,12 +669,16 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
619 | { | 669 | { |
620 | if (!sp.IsChildAgent) | 670 | if (!sp.IsChildAgent) |
621 | { | 671 | { |
622 | if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", sp.ControllingClient.Name); | 672 | if (m_debugEnabled) |
673 | m_log.DebugFormat("[GROUPS-MESSAGING]: Found root agent for client : {0}", sp.ControllingClient.Name); | ||
674 | |||
623 | return sp.ControllingClient; | 675 | return sp.ControllingClient; |
624 | } | 676 | } |
625 | else | 677 | else |
626 | { | 678 | { |
627 | if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", sp.ControllingClient.Name); | 679 | if (m_debugEnabled) |
680 | m_log.DebugFormat("[GROUPS-MESSAGING]: Found child agent for client : {0}", sp.ControllingClient.Name); | ||
681 | |||
628 | child = sp.ControllingClient; | 682 | child = sp.ControllingClient; |
629 | } | 683 | } |
630 | } | 684 | } |
@@ -633,12 +687,15 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
633 | // If we didn't find a root, then just return whichever child we found, or null if none | 687 | // If we didn't find a root, then just return whichever child we found, or null if none |
634 | if (child == null) | 688 | if (child == null) |
635 | { | 689 | { |
636 | if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Could not find local client for agent : {0}", agentID); | 690 | if (m_debugEnabled) |
691 | m_log.DebugFormat("[GROUPS-MESSAGING]: Could not find local client for agent : {0}", agentID); | ||
637 | } | 692 | } |
638 | else | 693 | else |
639 | { | 694 | { |
640 | if (m_debugEnabled) m_log.WarnFormat("[GROUPS-MESSAGING]: Returning child agent for client : {0}", child.Name); | 695 | if (m_debugEnabled) |
696 | m_log.DebugFormat("[GROUPS-MESSAGING]: Returning child agent for client : {0}", child.Name); | ||
641 | } | 697 | } |
698 | |||
642 | return child; | 699 | return child; |
643 | } | 700 | } |
644 | 701 | ||
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs index f34152c..8a9e4d2 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/GroupsModule.cs | |||
@@ -357,7 +357,10 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
357 | 357 | ||
358 | private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im) | 358 | private void OnInstantMessage(IClientAPI remoteClient, GridInstantMessage im) |
359 | { | 359 | { |
360 | if (m_debugEnabled) m_log.DebugFormat("[GROUPS]: {0} called", System.Reflection.MethodBase.GetCurrentMethod().Name); | 360 | if (m_debugEnabled) |
361 | m_log.DebugFormat( | ||
362 | "[GROUPS]: {0} called for {1}, message type {2}", | ||
363 | System.Reflection.MethodBase.GetCurrentMethod().Name, remoteClient.Name, (InstantMessageDialog)im.dialog); | ||
361 | 364 | ||
362 | // Group invitations | 365 | // Group invitations |
363 | if ((im.dialog == (byte)InstantMessageDialog.GroupInvitationAccept) || (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline)) | 366 | if ((im.dialog == (byte)InstantMessageDialog.GroupInvitationAccept) || (im.dialog == (byte)InstantMessageDialog.GroupInvitationDecline)) |
@@ -551,6 +554,9 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
551 | 554 | ||
552 | UUID noticeID = new UUID(im.imSessionID); | 555 | UUID noticeID = new UUID(im.imSessionID); |
553 | 556 | ||
557 | if (m_debugEnabled) | ||
558 | m_log.DebugFormat("[GROUPS]: Requesting notice {0} for {1}", noticeID, remoteClient.AgentId); | ||
559 | |||
554 | GroupNoticeInfo notice = m_groupData.GetGroupNotice(GetRequestingAgentID(remoteClient), noticeID); | 560 | GroupNoticeInfo notice = m_groupData.GetGroupNotice(GetRequestingAgentID(remoteClient), noticeID); |
555 | if (notice != null) | 561 | if (notice != null) |
556 | { | 562 | { |
@@ -572,6 +578,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups | |||
572 | 578 | ||
573 | remoteClient.SendInventoryItemCreateUpdate(itemCopy, 0); | 579 | remoteClient.SendInventoryItemCreateUpdate(itemCopy, 0); |
574 | } | 580 | } |
581 | else | ||
582 | { | ||
583 | if (m_debugEnabled) | ||
584 | m_log.DebugFormat( | ||
585 | "[GROUPS]: Could not find notice {0} for {1} on GroupNoticeInventoryAccepted.", | ||
586 | noticeID, remoteClient.AgentId); | ||
587 | } | ||
575 | } | 588 | } |
576 | 589 | ||
577 | // Interop, received special 210 code for ejecting a group member | 590 | // Interop, received special 210 code for ejecting a group member |
diff --git a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs index b5a10af..d944087 100644 --- a/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs +++ b/OpenSim/Region/OptionalModules/Avatar/XmlRpcGroups/Tests/GroupsModuleTests.cs | |||
@@ -132,6 +132,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests | |||
132 | MessageTransferModule mtm = new MessageTransferModule(); | 132 | MessageTransferModule mtm = new MessageTransferModule(); |
133 | GroupsModule gm = new GroupsModule(); | 133 | GroupsModule gm = new GroupsModule(); |
134 | GroupsMessagingModule gmm = new GroupsMessagingModule(); | 134 | GroupsMessagingModule gmm = new GroupsMessagingModule(); |
135 | MockGroupsServicesConnector mgsc = new MockGroupsServicesConnector(); | ||
135 | 136 | ||
136 | IConfigSource configSource = new IniConfigSource(); | 137 | IConfigSource configSource = new IniConfigSource(); |
137 | 138 | ||
@@ -149,7 +150,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests | |||
149 | config.Set("MessagingEnabled", true); | 150 | config.Set("MessagingEnabled", true); |
150 | } | 151 | } |
151 | 152 | ||
152 | SceneHelpers.SetupSceneModules(scene, configSource, new MockGroupsServicesConnector(), mtm, gm, gmm); | 153 | SceneHelpers.SetupSceneModules(scene, configSource, mgsc, mtm, gm, gmm); |
153 | 154 | ||
154 | UUID userId = TestHelpers.ParseTail(0x1); | 155 | UUID userId = TestHelpers.ParseTail(0x1); |
155 | string subjectText = "newman"; | 156 | string subjectText = "newman"; |
@@ -185,6 +186,12 @@ namespace OpenSim.Region.OptionalModules.Avatar.XmlRpcGroups.Tests | |||
185 | Assert.That(spReceivedMessages.Count, Is.EqualTo(1)); | 186 | Assert.That(spReceivedMessages.Count, Is.EqualTo(1)); |
186 | Assert.That(spReceivedMessages[0].message, Is.EqualTo(combinedSubjectMessage)); | 187 | Assert.That(spReceivedMessages[0].message, Is.EqualTo(combinedSubjectMessage)); |
187 | 188 | ||
189 | List<GroupNoticeData> notices = mgsc.GetGroupNotices(UUID.Zero, groupID); | ||
190 | Assert.AreEqual(1, notices.Count); | ||
191 | |||
192 | // OpenSimulator (possibly also SL) transport the notice ID as the session ID! | ||
193 | Assert.AreEqual(notices[0].NoticeID.Guid, spReceivedMessages[0].imSessionID); | ||
194 | |||
188 | Assert.That(sp2ReceivedMessages.Count, Is.EqualTo(0)); | 195 | Assert.That(sp2ReceivedMessages.Count, Is.EqualTo(0)); |
189 | } | 196 | } |
190 | 197 | ||