aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs27
-rwxr-xr-xOpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs124
-rw-r--r--OpenSim/Region/CoreModules/World/Land/LandObject.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs126
-rw-r--r--OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs11
-rw-r--r--OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs9
6 files changed, 111 insertions, 188 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index d21452f..6859b83 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -80,7 +80,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
80 public event DeRezObject OnDeRezObject; 80 public event DeRezObject OnDeRezObject;
81 public event RezRestoreToWorld OnRezRestoreToWorld; 81 public event RezRestoreToWorld OnRezRestoreToWorld;
82 public event ModifyTerrain OnModifyTerrain; 82 public event ModifyTerrain OnModifyTerrain;
83 public event Action<IClientAPI, uint> OnRegionHandShakeReply; 83 public event Action<IClientAPI> OnRegionHandShakeReply;
84 public event GenericCall1 OnRequestWearables; 84 public event GenericCall1 OnRequestWearables;
85 public event SetAppearance OnSetAppearance; 85 public event SetAppearance OnSetAppearance;
86 public event AvatarNowWearing OnAvatarNowWearing; 86 public event AvatarNowWearing OnAvatarNowWearing;
@@ -8923,7 +8923,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8923 8923
8924 private bool HandlerRegionHandshakeReply(IClientAPI sender, Packet Pack) 8924 private bool HandlerRegionHandshakeReply(IClientAPI sender, Packet Pack)
8925 { 8925 {
8926 Action<IClientAPI, uint> handlerRegionHandShakeReply = OnRegionHandShakeReply; 8926 Action<IClientAPI> handlerRegionHandShakeReply = OnRegionHandShakeReply;
8927 if (handlerRegionHandShakeReply == null) 8927 if (handlerRegionHandShakeReply == null)
8928 return true; // silence the warning 8928 return true; // silence the warning
8929 8929
@@ -8936,7 +8936,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
8936 else 8936 else
8937 m_viewerHandShakeFlags = 0; 8937 m_viewerHandShakeFlags = 0;
8938 8938
8939 handlerRegionHandShakeReply(this, m_viewerHandShakeFlags); 8939 handlerRegionHandShakeReply(this);
8940 8940
8941 return true; 8941 return true;
8942 } 8942 }
@@ -15364,15 +15364,30 @@ namespace OpenSim.Region.ClientStack.LindenUDP
15364 return new HashSet<string>(m_inPacketsToDrop); 15364 return new HashSet<string>(m_inPacketsToDrop);
15365 } 15365 }
15366 15366
15367 public void CheckViewerCaps() 15367 public uint GetViewerCaps()
15368 { 15368 {
15369 m_SupportObjectAnimations = false; 15369 m_SupportObjectAnimations = false;
15370 uint ret;
15371 if(m_supportViewerCache)
15372 ret = m_viewerHandShakeFlags;
15373 else
15374 ret = m_viewerHandShakeFlags & 4;
15375
15370 if (m_scene.CapsModule != null) 15376 if (m_scene.CapsModule != null)
15371 { 15377 {
15372 Caps cap = m_scene.CapsModule.GetCapsForUser(CircuitCode); 15378 Caps cap = m_scene.CapsModule.GetCapsForUser(CircuitCode);
15373 if (cap != null && (cap.Flags & Caps.CapsFlags.ObjectAnim) != 0) 15379 if(cap != null)
15374 m_SupportObjectAnimations = true; 15380 {
15381 if((cap.Flags & Caps.CapsFlags.SentSeeds) != 0)
15382 ret |= 0x1000;
15383 if ((cap.Flags & Caps.CapsFlags.ObjectAnim) != 0)
15384 {
15385 m_SupportObjectAnimations = true;
15386 ret |= 0x2000;
15387 }
15388 }
15375 } 15389 }
15390 return ret; // ???
15376 } 15391 }
15377 } 15392 }
15378} 15393}
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
index b105d52..6746573 100755
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLUDPServer.cs
@@ -1698,7 +1698,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1698 } 1698 }
1699 1699
1700 // Now we know we can handle more data 1700 // Now we know we can handle more data
1701 Thread.Sleep(200); 1701 //Thread.Sleep(200);
1702 1702
1703 // Obtain the pending queue and remove it from the cache 1703 // Obtain the pending queue and remove it from the cache
1704 Queue<UDPPacketBuffer> queue = null; 1704 Queue<UDPPacketBuffer> queue = null;
@@ -1727,7 +1727,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1727 { 1727 {
1728 if(aCircuit.teleportFlags <= 0) 1728 if(aCircuit.teleportFlags <= 0)
1729 client.SendRegionHandshake(); 1729 client.SendRegionHandshake();
1730 client.CheckViewerCaps();
1731 } 1730 }
1732 } 1731 }
1733 else 1732 else
@@ -1743,8 +1742,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1743 } 1742 }
1744 1743
1745 // m_log.DebugFormat( 1744 // m_log.DebugFormat(
1746 // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms", 1745 // "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms",
1747 // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds); 1746 // buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds);
1748 1747
1749 } 1748 }
1750 catch (Exception e) 1749 catch (Exception e)
@@ -1758,117 +1757,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1758 e.StackTrace); 1757 e.StackTrace);
1759 } 1758 }
1760 } 1759 }
1761/*
1762 protected void HandleCompleteMovementIntoRegion(object o)
1763 {
1764 IPEndPoint endPoint = null;
1765 IClientAPI client = null;
1766
1767 try
1768 {
1769 object[] array = (object[])o;
1770 endPoint = (IPEndPoint)array[0];
1771 CompleteAgentMovementPacket packet = (CompleteAgentMovementPacket)array[1];
1772
1773 m_log.DebugFormat(
1774 "[LLUDPSERVER]: Handling CompleteAgentMovement request from {0} in {1}", endPoint, Scene.Name);
1775
1776 // Determine which agent this packet came from
1777 // We need to wait here because in when using the OpenSimulator V2 teleport protocol to travel to a destination
1778 // simulator with no existing child presence, the viewer (at least LL 3.3.4) will send UseCircuitCode
1779 // and then CompleteAgentMovement immediately without waiting for an ack. As we are now handling these
1780 // packets asynchronously, we need to account for this thread proceeding more quickly than the
1781 // UseCircuitCode thread.
1782 int count = 40;
1783 while (count-- > 0)
1784 {
1785 if (Scene.TryGetClient(endPoint, out client))
1786 {
1787 if (!client.IsActive)
1788 {
1789 // This check exists to catch a condition where the client has been closed by another thread
1790 // but has not yet been removed from the client manager (and possibly a new connection has
1791 // not yet been established).
1792 m_log.DebugFormat(
1793 "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client is not active yet. Waiting.",
1794 endPoint, client.Name, Scene.Name);
1795 }
1796 else if (client.SceneAgent == null)
1797 {
1798 // This check exists to catch a condition where the new client has been added to the client
1799 // manager but the SceneAgent has not yet been set in Scene.AddNewAgent(). If we are too
1800 // eager, then the new ScenePresence may not have registered a listener for this messsage
1801 // before we try to process it.
1802 // XXX: A better long term fix may be to add the SceneAgent before the client is added to
1803 // the client manager
1804 m_log.DebugFormat(
1805 "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client SceneAgent not set yet. Waiting.",
1806 endPoint, client.Name, Scene.Name);
1807 }
1808 else
1809 {
1810 break;
1811 }
1812 }
1813 else
1814 {
1815 m_log.DebugFormat(
1816 "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} in {1} but no client exists yet. Waiting.",
1817 endPoint, Scene.Name);
1818 }
1819
1820 Thread.Sleep(200);
1821 }
1822
1823 if (client == null)
1824 {
1825 m_log.DebugFormat(
1826 "[LLUDPSERVER]: No client found for CompleteAgentMovement from {0} in {1} after wait. Dropping.",
1827 endPoint, Scene.Name);
1828
1829 return;
1830 }
1831 else if (!client.IsActive || client.SceneAgent == null)
1832 {
1833 // This check exists to catch a condition where the client has been closed by another thread
1834 // but has not yet been removed from the client manager.
1835 // The packet could be simply ignored but it is useful to know if this condition occurred for other debugging
1836 // purposes.
1837 m_log.DebugFormat(
1838 "[LLUDPSERVER]: Received a CompleteAgentMovement from {0} for {1} in {2} but client is not active after wait. Dropping.",
1839 endPoint, client.Name, Scene.Name);
1840
1841 return;
1842 }
1843
1844 IncomingPacket incomingPacket1;
1845
1846 // Inbox insertion
1847 if (UsePools)
1848 {
1849 incomingPacket1 = m_incomingPacketPool.GetObject();
1850 incomingPacket1.Client = (LLClientView)client;
1851 incomingPacket1.Packet = packet;
1852 }
1853 else
1854 {
1855 incomingPacket1 = new IncomingPacket((LLClientView)client, packet);
1856 }
1857
1858 packetInbox.Enqueue(incomingPacket1);
1859 }
1860 catch (Exception e)
1861 {
1862 m_log.ErrorFormat(
1863 "[LLUDPSERVER]: CompleteAgentMovement handling from endpoint {0}, client {1} {2} failed. Exception {3}{4}",
1864 endPoint != null ? endPoint.ToString() : "n/a",
1865 client != null ? client.Name : "unknown",
1866 client != null ? client.AgentId.ToString() : "unknown",
1867 e.Message,
1868 e.StackTrace);
1869 }
1870 }
1871*/
1872 1760
1873 /// <summary> 1761 /// <summary>
1874 /// Send an ack immediately to the given endpoint. 1762 /// Send an ack immediately to the given endpoint.
@@ -1936,7 +1824,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
1936 { 1824 {
1937 if (Scene.TryGetClient(agentID, out client)) 1825 if (Scene.TryGetClient(agentID, out client))
1938 { 1826 {
1939 if (client.SceneAgent != null) 1827 if (client.SceneAgent != null &&
1828 client.CircuitCode == circuitCode &&
1829 client.SessionId == sessionID &&
1830 client.RemoteEndPoint == remoteEndPoint &&
1831 client.SceneAgent.ControllingClient.SecureSessionId == sessionInfo.LoginInfo.SecureSession)
1940 return client; 1832 return client;
1941 Scene.CloseAgent(agentID, true); 1833 Scene.CloseAgent(agentID, true);
1942 } 1834 }
diff --git a/OpenSim/Region/CoreModules/World/Land/LandObject.cs b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
index 26500ab..094b0f5 100644
--- a/OpenSim/Region/CoreModules/World/Land/LandObject.cs
+++ b/OpenSim/Region/CoreModules/World/Land/LandObject.cs
@@ -1841,7 +1841,7 @@ namespace OpenSim.Region.CoreModules.World.Land
1841 UUID lgid = LandData.GlobalID; 1841 UUID lgid = LandData.GlobalID;
1842 m_scene.ForEachRootScenePresence(delegate(ScenePresence sp) 1842 m_scene.ForEachRootScenePresence(delegate(ScenePresence sp)
1843 { 1843 {
1844 if(sp.IsNPC || sp.IsLoggingIn || sp.IsDeleted || sp.currentParcelUUID != lgid) 1844 if(sp.IsNPC || sp.IsDeleted || sp.currentParcelUUID != lgid)
1845 return; 1845 return;
1846 cur += (now - sp.ParcelDwellTickMS); 1846 cur += (now - sp.ParcelDwellTickMS);
1847 sp.ParcelDwellTickMS = now; 1847 sp.ParcelDwellTickMS = now;
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index a95036c..123b605 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -99,6 +99,8 @@ namespace OpenSim.Region.Framework.Scenes
99 public bool IsViewerUIGod { get; set; } 99 public bool IsViewerUIGod { get; set; }
100 public bool IsGod { get; set; } 100 public bool IsGod { get; set; }
101 101
102 private bool m_gotRegionHandShake = false;
103
102 private PresenceType m_presenceType; 104 private PresenceType m_presenceType;
103 public PresenceType PresenceType 105 public PresenceType PresenceType
104 { 106 {
@@ -288,7 +290,7 @@ namespace OpenSim.Region.Framework.Scenes
288 private Quaternion m_lastRotation; 290 private Quaternion m_lastRotation;
289 private Vector3 m_lastVelocity; 291 private Vector3 m_lastVelocity;
290 private Vector3 m_lastSize = new Vector3(0.45f,0.6f,1.9f); 292 private Vector3 m_lastSize = new Vector3(0.45f,0.6f,1.9f);
291 private bool SentInitialData = false; 293 private bool NeedInitialData = false;
292 294
293 private int m_userFlags; 295 private int m_userFlags;
294 public int UserFlags 296 public int UserFlags
@@ -881,7 +883,6 @@ namespace OpenSim.Region.Framework.Scenes
881 } 883 }
882 884
883 public bool IsChildAgent { get; set; } 885 public bool IsChildAgent { get; set; }
884 public bool IsLoggingIn { get; set; }
885 886
886 /// <summary> 887 /// <summary>
887 /// If the avatar is sitting, the local ID of the prim that it's sitting on. If not sitting then zero. 888 /// If the avatar is sitting, the local ID of the prim that it's sitting on. If not sitting then zero.
@@ -1074,7 +1075,6 @@ namespace OpenSim.Region.Framework.Scenes
1074 AttachmentsSyncLock = new Object(); 1075 AttachmentsSyncLock = new Object();
1075 AllowMovement = true; 1076 AllowMovement = true;
1076 IsChildAgent = true; 1077 IsChildAgent = true;
1077 IsLoggingIn = false;
1078 m_sendCoarseLocationsMethod = SendCoarseLocationsDefault; 1078 m_sendCoarseLocationsMethod = SendCoarseLocationsDefault;
1079 Animator = new ScenePresenceAnimator(this); 1079 Animator = new ScenePresenceAnimator(this);
1080 Overrides = new MovementAnimationOverrides(); 1080 Overrides = new MovementAnimationOverrides();
@@ -1307,7 +1307,6 @@ namespace OpenSim.Region.Framework.Scenes
1307 ParentPart = null; 1307 ParentPart = null;
1308 PrevSitOffset = Vector3.Zero; 1308 PrevSitOffset = Vector3.Zero;
1309 HandleForceReleaseControls(ControllingClient, UUID); // needs testing 1309 HandleForceReleaseControls(ControllingClient, UUID); // needs testing
1310 IsLoggingIn = false;
1311 } 1310 }
1312 else 1311 else
1313 { 1312 {
@@ -1331,10 +1330,6 @@ namespace OpenSim.Region.Framework.Scenes
1331 } 1330 }
1332 ParentUUID = UUID.Zero; 1331 ParentUUID = UUID.Zero;
1333 } 1332 }
1334 else
1335 {
1336 IsLoggingIn = false;
1337 }
1338 1333
1339 IsChildAgent = false; 1334 IsChildAgent = false;
1340 } 1335 }
@@ -2163,7 +2158,7 @@ namespace OpenSim.Region.Framework.Scenes
2163 //m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts)); 2158 //m_log.DebugFormat("[CompleteMovement] MoveAgentIntoRegion: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2164 2159
2165 // recheck to reduce timing issues 2160 // recheck to reduce timing issues
2166 ControllingClient.CheckViewerCaps(); 2161 ControllingClient.GetViewerCaps();
2167 2162
2168 bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0; 2163 bool isHGTP = (m_teleportFlags & TeleportFlags.ViaHGLogin) != 0;
2169 2164
@@ -2325,9 +2320,40 @@ namespace OpenSim.Region.Framework.Scenes
2325 } 2320 }
2326 } 2321 }
2327 } 2322 }
2328 if(!IsNPC) 2323 //m_log.DebugFormat("[CompleteMovement] attachments: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2324 if (!IsNPC)
2329 { 2325 {
2330 //m_log.DebugFormat("[CompleteMovement] attachments: {0}ms", Util.EnvironmentTickCountSubtract(ts)); 2326 if (!string.IsNullOrEmpty(m_callbackURI))
2327 {
2328 m_log.DebugFormat(
2329 "[SCENE PRESENCE]: Releasing {0} {1} with old callback to {2}",
2330 client.Name, client.AgentId, m_callbackURI);
2331
2332 UUID originID;
2333
2334 lock (m_originRegionIDAccessLock)
2335 originID = m_originRegionID;
2336
2337 Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI);
2338 m_callbackURI = null;
2339 //m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2340 }
2341 else if (!string.IsNullOrEmpty(m_newCallbackURI))
2342 {
2343 m_log.DebugFormat(
2344 "[SCENE PRESENCE]: Releasing {0} {1} with callback to {2}",
2345 client.Name, client.AgentId, m_newCallbackURI);
2346
2347 UUID originID;
2348
2349 lock (m_originRegionIDAccessLock)
2350 originID = m_originRegionID;
2351
2352 Scene.SimulationService.ReleaseAgent(originID, UUID, m_newCallbackURI);
2353 m_newCallbackURI = null;
2354 //m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2355 }
2356
2331 if (openChildAgents) 2357 if (openChildAgents)
2332 { 2358 {
2333 // Create child agents in neighbouring regions 2359 // Create child agents in neighbouring regions
@@ -2360,36 +2386,6 @@ namespace OpenSim.Region.Framework.Scenes
2360 2386
2361 //m_log.DebugFormat("[CompleteMovement] SendInitialDataToMe: {0}ms", Util.EnvironmentTickCountSubtract(ts)); 2387 //m_log.DebugFormat("[CompleteMovement] SendInitialDataToMe: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2362 2388
2363 if (!string.IsNullOrEmpty(m_callbackURI))
2364 {
2365 m_log.DebugFormat(
2366 "[SCENE PRESENCE]: Releasing {0} {1} with old callback to {2}",
2367 client.Name, client.AgentId, m_callbackURI);
2368
2369 UUID originID;
2370
2371 lock (m_originRegionIDAccessLock)
2372 originID = m_originRegionID;
2373
2374 Scene.SimulationService.ReleaseAgent(originID, UUID, m_callbackURI);
2375 m_callbackURI = null;
2376 //m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2377 }
2378 else if (!string.IsNullOrEmpty(m_newCallbackURI))
2379 {
2380 m_log.DebugFormat(
2381 "[SCENE PRESENCE]: Releasing {0} {1} with callback to {2}",
2382 client.Name, client.AgentId, m_newCallbackURI);
2383
2384 UUID originID;
2385
2386 lock (m_originRegionIDAccessLock)
2387 originID = m_originRegionID;
2388
2389 Scene.SimulationService.ReleaseAgent(originID, UUID, m_newCallbackURI);
2390 m_newCallbackURI = null;
2391 //m_log.DebugFormat("[CompleteMovement] ReleaseAgent: {0}ms", Util.EnvironmentTickCountSubtract(ts));
2392 }
2393 2389
2394 if (openChildAgents) 2390 if (openChildAgents)
2395 { 2391 {
@@ -3850,15 +3846,21 @@ namespace OpenSim.Region.Framework.Scenes
3850 3846
3851 public override void Update() 3847 public override void Update()
3852 { 3848 {
3853 if(IsChildAgent || IsDeleted) 3849 if (IsDeleted)
3854 return; 3850 return;
3855 3851
3856 CheckForBorderCrossing(); 3852 if (NeedInitialData)
3853 {
3854 SendInitialData();
3855 return;
3856 }
3857 3857
3858 if (IsInTransit || IsLoggingIn) 3858 if (IsChildAgent || IsInTransit)
3859 return; 3859 return;
3860 3860
3861 if(m_movingToTarget) 3861 CheckForBorderCrossing();
3862
3863 if (m_movingToTarget)
3862 { 3864 {
3863 m_delayedStop = -1; 3865 m_delayedStop = -1;
3864 Vector3 control = Vector3.Zero; 3866 Vector3 control = Vector3.Zero;
@@ -4033,25 +4035,28 @@ namespace OpenSim.Region.Framework.Scenes
4033 ControllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); 4035 ControllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations);
4034 } 4036 }
4035 4037
4036 public void RegionHandShakeReply (IClientAPI client, uint flags) 4038 public void RegionHandShakeReply (IClientAPI client)
4037 { 4039 {
4038 if(IsNPC) 4040 if(IsNPC)
4039 return; 4041 return;
4040 4042
4041 lock (m_completeMovementLock) 4043 lock (m_completeMovementLock)
4042 { 4044 {
4043 if (SentInitialData) 4045 if(m_gotRegionHandShake)
4044 return; 4046 return;
4045 SentInitialData = true; 4047 NeedInitialData = true;
4046 } 4048 }
4049 }
4050
4051 private void SendInitialData()
4052 {
4053 uint flags = ControllingClient.GetViewerCaps();
4054 if((flags & 0x1000) == 0) // wait for seeds sending
4055 return;
4056
4057 NeedInitialData = false;
4047 4058
4048 bool selfappearance = (flags & 4) != 0; 4059 bool selfappearance = (flags & 4) != 0;
4049 bool cacheCulling = (flags & 1) != 0;
4050 bool cacheEmpty;
4051 if(cacheCulling)
4052 cacheEmpty = (flags & 2) != 0;
4053 else
4054 cacheEmpty = true;
4055 4060
4056 Util.FireAndForget(delegate 4061 Util.FireAndForget(delegate
4057 { 4062 {
@@ -4066,9 +4071,6 @@ namespace OpenSim.Region.Framework.Scenes
4066 SendOtherAgentsAvatarFullToMe(); 4071 SendOtherAgentsAvatarFullToMe();
4067 } 4072 }
4068 4073
4069 // recheck to reduce timing issues
4070 ControllingClient.CheckViewerCaps();
4071
4072 if (m_scene.ObjectsCullingByDistance) 4074 if (m_scene.ObjectsCullingByDistance)
4073 { 4075 {
4074 m_reprioritizationBusy = true; 4076 m_reprioritizationBusy = true;
@@ -4081,6 +4083,13 @@ namespace OpenSim.Region.Framework.Scenes
4081 return; 4083 return;
4082 } 4084 }
4083 4085
4086 bool cacheCulling = (flags & 1) != 0;
4087 bool cacheEmpty;
4088 if (cacheCulling)
4089 cacheEmpty = (flags & 2) != 0;
4090 else
4091 cacheEmpty = true;
4092
4084 EntityBase[] entities = Scene.Entities.GetEntities(); 4093 EntityBase[] entities = Scene.Entities.GetEntities();
4085 if(cacheEmpty) 4094 if(cacheEmpty)
4086 { 4095 {
@@ -6816,7 +6825,8 @@ namespace OpenSim.Region.Framework.Scenes
6816 lock (m_completeMovementLock) 6825 lock (m_completeMovementLock)
6817 { 6826 {
6818 GodController.HasMovedAway(); 6827 GodController.HasMovedAway();
6819 SentInitialData = false; 6828 NeedInitialData = false;
6829 m_gotRegionHandShake = false;
6820 } 6830 }
6821 6831
6822 List<ScenePresence> allpresences = m_scene.GetScenePresences(); 6832 List<ScenePresence> allpresences = m_scene.GetScenePresences();
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
index 80baf82..9f85185 100644
--- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
+++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs
@@ -699,7 +699,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
699 public event TeleportCancel OnTeleportCancel; 699 public event TeleportCancel OnTeleportCancel;
700 public event DeRezObject OnDeRezObject; 700 public event DeRezObject OnDeRezObject;
701 public event RezRestoreToWorld OnRezRestoreToWorld; 701 public event RezRestoreToWorld OnRezRestoreToWorld;
702 public event Action<IClientAPI, uint> OnRegionHandShakeReply; 702 public event Action<IClientAPI> OnRegionHandShakeReply;
703 public event GenericCall1 OnRequestWearables; 703 public event GenericCall1 OnRequestWearables;
704 public event Action<IClientAPI, bool> OnCompleteMovementToRegion; 704 public event Action<IClientAPI, bool> OnCompleteMovementToRegion;
705 public event UpdateAgent OnPreAgentUpdate; 705 public event UpdateAgent OnPreAgentUpdate;
@@ -938,12 +938,12 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
938 938
939 if (OnRegionHandShakeReply != null) 939 if (OnRegionHandShakeReply != null)
940 { 940 {
941 OnRegionHandShakeReply(this, 0); 941 OnRegionHandShakeReply(this);
942 } 942 }
943 943
944 if (OnCompleteMovementToRegion != null) 944 if (OnCompleteMovementToRegion != null)
945 { 945 {
946 OnCompleteMovementToRegion(this, true); 946 OnCompleteMovementToRegion(this, false);
947 } 947 }
948 } 948 }
949 949
@@ -1773,7 +1773,10 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server
1773 return 0; 1773 return 0;
1774 } 1774 }
1775 1775
1776 public void CheckViewerCaps() { } 1776 public uint GetViewerCaps()
1777 {
1778 return 0;
1779 }
1777 1780
1778 } 1781 }
1779} 1782}
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
index a7ed7d1..954d336 100644
--- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
+++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs
@@ -319,7 +319,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
319 319
320 public event DeRezObject OnDeRezObject; 320 public event DeRezObject OnDeRezObject;
321 public event RezRestoreToWorld OnRezRestoreToWorld; 321 public event RezRestoreToWorld OnRezRestoreToWorld;
322 public event Action<IClientAPI, uint> OnRegionHandShakeReply; 322 public event Action<IClientAPI> OnRegionHandShakeReply;
323 public event GenericCall1 OnRequestWearables; 323 public event GenericCall1 OnRequestWearables;
324 public event Action<IClientAPI, bool> OnCompleteMovementToRegion; 324 public event Action<IClientAPI, bool> OnCompleteMovementToRegion;
325 public event UpdateAgent OnPreAgentUpdate; 325 public event UpdateAgent OnPreAgentUpdate;
@@ -928,7 +928,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC
928 { 928 {
929 if (OnRegionHandShakeReply != null) 929 if (OnRegionHandShakeReply != null)
930 { 930 {
931 OnRegionHandShakeReply(this, 0); 931 OnRegionHandShakeReply(this);
932 } 932 }
933 } 933 }
934 934
@@ -1384,7 +1384,10 @@ namespace OpenSim.Region.OptionalModules.World.NPC
1384 return 0; 1384 return 0;
1385 } 1385 }
1386 1386
1387 public void CheckViewerCaps() { } 1387 public uint GetViewerCaps()
1388 {
1389 return 0;
1390 }
1388 1391
1389 } 1392 }
1390} 1393}