From 58106926bbdad0e89b941237f380d9904a642e8b Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sat, 26 Jan 2008 17:00:35 +0000 Subject: [PATCH] * Added a try/catch handler around childdataupdates because the enumeration is prone to modification when logging on. These can be safely ignored because the data gets old fast and new ones get generated somewhat quickly. --- OpenSim/Region/ClientStack/ClientView.cs | 1 + .../Scenes/SceneCommunicationService.cs | 27 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/OpenSim/Region/ClientStack/ClientView.cs b/OpenSim/Region/ClientStack/ClientView.cs index 9d9a792212..370bdbb781 100644 --- a/OpenSim/Region/ClientStack/ClientView.cs +++ b/OpenSim/Region/ClientStack/ClientView.cs @@ -2678,6 +2678,7 @@ namespace OpenSim.Region.ClientStack break; case PacketType.ModifyLand: ModifyLandPacket modify = (ModifyLandPacket)Pack; + //MainLog.Instance.Verbose("LAND", "LAND:" + modify.ToString()); if (modify.ParcelData.Length > 0) { if (OnModifyTerrain != null) diff --git a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs index 805b44ce10..2bb36a366b 100644 --- a/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Environment/Scenes/SceneCommunicationService.cs @@ -344,20 +344,27 @@ namespace OpenSim.Region.Environment.Scenes private void SendChildAgentDataUpdateAsync(ChildAgentDataUpdate cAgentData, ScenePresence presence) { //MainLog.Instance.Notice("INTERGRID", "Informing neighbors about my agent."); - - foreach (ulong regionHandle in presence.KnownChildRegions) + try { - bool regionAccepted = m_commsProvider.InterRegion.ChildAgentUpdate(regionHandle, cAgentData); + foreach (ulong regionHandle in presence.KnownChildRegions) + { + bool regionAccepted = m_commsProvider.InterRegion.ChildAgentUpdate(regionHandle, cAgentData); - if (regionAccepted) - { - //MainLog.Instance.Notice("INTERGRID", "Completed sending a neighbor an update about my agent"); - } - else - { - //MainLog.Instance.Notice("INTERGRID", "Failed sending a neighbor an update about my agent"); + if (regionAccepted) + { + //MainLog.Instance.Notice("INTERGRID", "Completed sending a neighbor an update about my agent"); + } + else + { + //MainLog.Instance.Notice("INTERGRID", "Failed sending a neighbor an update about my agent"); + } } } + catch (System.InvalidOperationException) + { + // We're ignoring a collection was modified error because this data gets old and outdated fast. + } + } private void SendChildAgentDataUpdateCompleted(IAsyncResult iar)