aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
authorJustin Clarke Casey2008-08-12 19:00:13 +0000
committerJustin Clarke Casey2008-08-12 19:00:13 +0000
commit4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf (patch)
tree6aab22c68ef6fbc8262567cb0cdaa511ca965b54 /OpenSim/Region
parentThanks, lulurun, for a patch that addresses inventory problems that occur (diff)
downloadopensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.zip
opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.tar.gz
opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.tar.bz2
opensim-SC_OLD-4e555b87f31c0e82b6120564cd6d8e2b41a3b8bf.tar.xz
* Stop warnings about non existent scene presences/entities being removed on client log off
* This is being done by preventing close from being called twice on child agent closure (nres which would have been thrown are being swallowed). * However, it should be possible to do much better cleanup on this code in the future
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs18
-rw-r--r--OpenSim/Region/Environment/Scenes/InnerScene.cs22
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs3
3 files changed, 27 insertions, 16 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 2d0215f..b143f3e 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -454,17 +454,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP
454 /// <param name="shutdownCircuit"></param> 454 /// <param name="shutdownCircuit"></param>
455 public void Close(bool shutdownCircuit) 455 public void Close(bool shutdownCircuit)
456 { 456 {
457 // Pull Client out of Region 457 m_log.DebugFormat(
458 m_log.Info("[CLIENT]: Close has been called"); 458 "[CLIENT]: Close has been called with shutdownCircuit = {0} on scene {1}",
459 shutdownCircuit, m_scene.RegionInfo.RegionName);
460
459 m_PacketHandler.Flush(); 461 m_PacketHandler.Flush();
460 462
461 //raiseevent on the packet server to Shutdown the circuit 463 // raise an event on the packet server to Shutdown the circuit
464 // Now, if we raise the event then the packet server will call this method itself, so don't try cleanup
465 // here otherwise we'll end up calling it twice.
466 // FIXME: In truth, I might be wrong but this whole business of calling this method twice (with different args) looks
467 // horribly tangly. Hopefully it should be possible to greatly simplify it.
462 if (shutdownCircuit) 468 if (shutdownCircuit)
463 { 469 {
464 OnConnectionClosed(this); 470 OnConnectionClosed(this);
465 } 471 }
466 472 else
467 CloseCleanup(shutdownCircuit); 473 {
474 CloseCleanup(shutdownCircuit);
475 }
468 } 476 }
469 477
470 public void Kick(string message) 478 public void Kick(string message)
diff --git a/OpenSim/Region/Environment/Scenes/InnerScene.cs b/OpenSim/Region/Environment/Scenes/InnerScene.cs
index c4e4919..cdc05ee 100644
--- a/OpenSim/Region/Environment/Scenes/InnerScene.cs
+++ b/OpenSim/Region/Environment/Scenes/InnerScene.cs
@@ -584,26 +584,26 @@ namespace OpenSim.Region.Environment.Scenes
584 { 584 {
585 lock (Entities) 585 lock (Entities)
586 { 586 {
587 if (Entities.Remove(agentID)) 587 if (!Entities.Remove(agentID))
588 {
589 //m_log.InfoFormat("[SCENE] Removed scene presence {0} from entities list", agentID);
590 }
591 else
592 { 588 {
593 m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID); 589 m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene Entities list", agentID);
594 } 590 }
591// else
592// {
593// m_log.InfoFormat("[SCENE] Removed scene presence {0} from entities list", agentID);
594// }
595 } 595 }
596 596
597 lock (ScenePresences) 597 lock (ScenePresences)
598 { 598 {
599 if (ScenePresences.Remove(agentID)) 599 if (!ScenePresences.Remove(agentID))
600 {
601 //m_log.InfoFormat("[SCENE] Removed scene presence {0}", agentID);
602 }
603 else
604 { 600 {
605 m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID); 601 m_log.WarnFormat("[SCENE] Tried to remove non-existent scene presence with agent ID {0} from scene ScenePresences list", agentID);
606 } 602 }
603// else
604// {
605// m_log.InfoFormat("[SCENE] Removed scene presence {0} from scene presences list", agentID);
606// }
607 } 607 }
608 } 608 }
609 609
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index b54713f..ef0a119 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -2259,6 +2259,7 @@ namespace OpenSim.Region.Environment.Scenes
2259 { 2259 {
2260 childagentYN = avatar.IsChildAgent; 2260 childagentYN = avatar.IsChildAgent;
2261 } 2261 }
2262
2262 try 2263 try
2263 { 2264 {
2264 m_log.DebugFormat( 2265 m_log.DebugFormat(
@@ -2295,6 +2296,7 @@ namespace OpenSim.Region.Environment.Scenes
2295 // We don't know which count to remove it from 2296 // We don't know which count to remove it from
2296 // Avatar is already disposed :/ 2297 // Avatar is already disposed :/
2297 } 2298 }
2299
2298 m_eventManager.TriggerOnRemovePresence(agentID); 2300 m_eventManager.TriggerOnRemovePresence(agentID);
2299 Broadcast(delegate(IClientAPI client) 2301 Broadcast(delegate(IClientAPI client)
2300 { 2302 {
@@ -2631,6 +2633,7 @@ namespace OpenSim.Region.Environment.Scenes
2631 { 2633 {
2632 m_innerScene.removeUserCount(true); 2634 m_innerScene.removeUserCount(true);
2633 } 2635 }
2636
2634 // Tell a single agent to disconnect from the region. 2637 // Tell a single agent to disconnect from the region.
2635 presence.ControllingClient.SendShutdownConnectionNotice(); 2638 presence.ControllingClient.SendShutdownConnectionNotice();
2636 2639