diff options
author | UbitUmarov | 2019-04-06 12:25:54 +0100 |
---|---|---|
committer | UbitUmarov | 2019-04-06 12:25:54 +0100 |
commit | 0ebb1f3f4b7dc2ede7ab12cd086f8189926251ad (patch) | |
tree | 0028b575a47ae05c8ac43fd292c0eaab965d7002 /OpenSim/Region/CoreModules | |
parent | try handle the special case MaxRegionsViewDistance = 0 (agents only see void ... (diff) | |
download | opensim-SC-0ebb1f3f4b7dc2ede7ab12cd086f8189926251ad.zip opensim-SC-0ebb1f3f4b7dc2ede7ab12cd086f8189926251ad.tar.gz opensim-SC-0ebb1f3f4b7dc2ede7ab12cd086f8189926251ad.tar.bz2 opensim-SC-0ebb1f3f4b7dc2ede7ab12cd086f8189926251ad.tar.xz |
presence detector: don't even try to logout agents that didn't made to root
Diffstat (limited to 'OpenSim/Region/CoreModules')
-rw-r--r-- | OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs index a7e62eb..3f418f6 100644 --- a/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs +++ b/OpenSim/Region/CoreModules/ServiceConnectorsOut/Presence/PresenceDetector.cs | |||
@@ -50,7 +50,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence | |||
50 | public void AddRegion(Scene scene) | 50 | public void AddRegion(Scene scene) |
51 | { | 51 | { |
52 | scene.EventManager.OnMakeRootAgent += OnMakeRootAgent; | 52 | scene.EventManager.OnMakeRootAgent += OnMakeRootAgent; |
53 | scene.EventManager.OnNewClient += OnNewClient; | ||
54 | 53 | ||
55 | m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID); | 54 | m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID); |
56 | 55 | ||
@@ -61,7 +60,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence | |||
61 | public void RemoveRegion(Scene scene) | 60 | public void RemoveRegion(Scene scene) |
62 | { | 61 | { |
63 | scene.EventManager.OnMakeRootAgent -= OnMakeRootAgent; | 62 | scene.EventManager.OnMakeRootAgent -= OnMakeRootAgent; |
64 | scene.EventManager.OnNewClient -= OnNewClient; | ||
65 | 63 | ||
66 | m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID); | 64 | m_PresenceService.LogoutRegionAgents(scene.RegionInfo.RegionID); |
67 | } | 65 | } |
@@ -71,7 +69,9 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence | |||
71 | if (sp.IsNPC) | 69 | if (sp.IsNPC) |
72 | return; | 70 | return; |
73 | 71 | ||
74 | if(sp.gotCrossUpdate) | 72 | sp.ControllingClient.OnConnectionClosed += OnConnectionClose; |
73 | |||
74 | if (sp.gotCrossUpdate) | ||
75 | { | 75 | { |
76 | Util.FireAndForget(delegate | 76 | Util.FireAndForget(delegate |
77 | { | 77 | { |
@@ -89,11 +89,6 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Presence | |||
89 | m_PresenceService.ReportAgent(sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID); | 89 | m_PresenceService.ReportAgent(sp.ControllingClient.SessionId, sp.Scene.RegionInfo.RegionID); |
90 | } | 90 | } |
91 | 91 | ||
92 | public void OnNewClient(IClientAPI client) | ||
93 | { | ||
94 | client.OnConnectionClosed += OnConnectionClose; | ||
95 | } | ||
96 | |||
97 | public void OnConnectionClose(IClientAPI client) | 92 | public void OnConnectionClose(IClientAPI client) |
98 | { | 93 | { |
99 | if (client != null && client.SceneAgent != null && !client.SceneAgent.IsChildAgent) | 94 | if (client != null && client.SceneAgent != null && !client.SceneAgent.IsChildAgent) |