aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Framework/BlockingQueue.cs5
-rw-r--r--OpenSim/Framework/IClientAPI.cs1
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs3
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs23
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs3
-rw-r--r--OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs8
6 files changed, 33 insertions, 10 deletions
diff --git a/OpenSim/Framework/BlockingQueue.cs b/OpenSim/Framework/BlockingQueue.cs
index e03229b..857930a 100644
--- a/OpenSim/Framework/BlockingQueue.cs
+++ b/OpenSim/Framework/BlockingQueue.cs
@@ -66,7 +66,9 @@ namespace OpenSim.Framework
66 if (m_pqueue.Count > 0) 66 if (m_pqueue.Count > 0)
67 return m_pqueue.Dequeue(); 67 return m_pqueue.Dequeue();
68 68
69 return m_queue.Dequeue(); 69 if (m_queue.Count > 0)
70 return m_queue.Dequeue();
71 return default(T);
70 } 72 }
71 } 73 }
72 74
@@ -119,6 +121,7 @@ namespace OpenSim.Framework
119 { 121 {
120 m_pqueue.Clear(); 122 m_pqueue.Clear();
121 m_queue.Clear(); 123 m_queue.Clear();
124 Monitor.Pulse(m_queueSync);
122 } 125 }
123 } 126 }
124 } 127 }
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 430cbd7..91a5d5c 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -1127,7 +1127,6 @@ namespace OpenSim.Framework
1127 1127
1128 void SetClientOption(string option, string value); 1128 void SetClientOption(string option, string value);
1129 string GetClientOption(string option); 1129 string GetClientOption(string option);
1130 void Terminate();
1131 1130
1132 void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters); 1131 void SendSetFollowCamProperties(UUID objectID, SortedDictionary<int, float> parameters);
1133 void SendClearFollowCamProperties(UUID objectID); 1132 void SendClearFollowCamProperties(UUID objectID);
diff --git a/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs
index 665c773..09edc94 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/ILLPacketHandler.cs
@@ -40,7 +40,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
40 /// Interface to a class that handles all the activity involved with maintaining the client circuit (handling acks, 40 /// Interface to a class that handles all the activity involved with maintaining the client circuit (handling acks,
41 /// resends, pings, etc.) 41 /// resends, pings, etc.)
42 /// </summary> 42 /// </summary>
43 public interface ILLPacketHandler 43 public interface ILLPacketHandler : IDisposable
44 { 44 {
45 event PacketStats OnPacketStats; 45 event PacketStats OnPacketStats;
46 event PacketDrop OnPacketDrop; 46 event PacketDrop OnPacketDrop;
@@ -70,7 +70,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP
70 void OutPacket(Packet NewPack, 70 void OutPacket(Packet NewPack,
71 ThrottleOutPacketType throttlePacketType, Object id); 71 ThrottleOutPacketType throttlePacketType, Object id);
72 LLPacketQueue PacketQueue { get; } 72 LLPacketQueue PacketQueue { get; }
73 void Stop();
74 void Flush(); 73 void Flush();
75 void Clear(); 74 void Clear();
76 ClientInfo GetClientInfo(); 75 ClientInfo GetClientInfo();
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
index 9788f40..460f94e 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs
@@ -633,6 +633,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
633 // of the client thread regardless of where Close() is called. 633 // of the client thread regardless of where Close() is called.
634 KillEndDone(); 634 KillEndDone();
635 } 635 }
636
637 Terminate();
636 } 638 }
637 639
638 /// <summary> 640 /// <summary>
@@ -737,16 +739,24 @@ namespace OpenSim.Region.ClientStack.LindenUDP
737 739
738 } 740 }
739 741
740 public void Terminate() 742 private void Terminate()
741 { 743 {
744 IsActive = false;
745
746 m_clientPingTimer.Close();
747 m_avatarTerseUpdateTimer.Close();
748 m_primTerseUpdateTimer.Close();
749 m_primFullUpdateTimer.Close();
750 m_textureRequestTimer.Close();
751
742 m_PacketHandler.OnPacketStats -= PopulateStats; 752 m_PacketHandler.OnPacketStats -= PopulateStats;
743 m_PacketHandler.Stop(); 753 m_PacketHandler.Dispose();
744 754
745 // wait for thread stoped 755 // wait for thread stoped
746 m_clientThread.Join(); 756 // m_clientThread.Join();
747 757
748 // delete circuit code 758 // delete circuit code
749 m_networkServer.CloseClient(this); 759 //m_networkServer.CloseClient(this);
750 } 760 }
751 761
752 #endregion 762 #endregion
@@ -876,6 +886,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
876 while (IsActive) 886 while (IsActive)
877 { 887 {
878 LLQueItem nextPacket = m_PacketHandler.PacketQueue.Dequeue(); 888 LLQueItem nextPacket = m_PacketHandler.PacketQueue.Dequeue();
889
890 if (nextPacket == null) {
891 m_log.DebugFormat("[CLIENT]: PacketQueue return null LLQueItem");
892 continue;
893 }
879 894
880 if (nextPacket.Incoming) 895 if (nextPacket.Incoming)
881 { 896 {
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
index eaf8f60..67ece75 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketHandler.cs
@@ -176,9 +176,10 @@ namespace OpenSim.Region.ClientStack.LindenUDP
176 m_AckTimer.Start(); 176 m_AckTimer.Start();
177 } 177 }
178 178
179 public void Stop() 179 public void Dispose()
180 { 180 {
181 m_AckTimer.Stop(); 181 m_AckTimer.Stop();
182 m_AckTimer.Close();
182 183
183 m_PacketQueue.Enqueue(null); 184 m_PacketQueue.Enqueue(null);
184 m_PacketQueue.Close(); 185 m_PacketQueue.Close();
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
index 798c1e7..6dd0697 100644
--- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
+++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs
@@ -39,7 +39,7 @@ using Timer=System.Timers.Timer;
39 39
40namespace OpenSim.Region.ClientStack.LindenUDP 40namespace OpenSim.Region.ClientStack.LindenUDP
41{ 41{
42 public class LLPacketQueue : IPullStatsProvider 42 public class LLPacketQueue : IPullStatsProvider, IDisposable
43 { 43 {
44 private static readonly ILog m_log 44 private static readonly ILog m_log
45 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 45 = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -342,11 +342,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
342 342
343 public void Close() 343 public void Close()
344 { 344 {
345 Dispose();
346 }
347
348 public void Dispose()
349 {
345 Flush(); 350 Flush();
346 WipeClean(); // I'm sure there's a dirty joke in here somewhere. -AFrisby 351 WipeClean(); // I'm sure there's a dirty joke in here somewhere. -AFrisby
347 352
348 m_enabled = false; 353 m_enabled = false;
349 throttleTimer.Stop(); 354 throttleTimer.Stop();
355 throttleTimer.Close();
350 356
351 if (StatsManager.SimExtraStats != null) 357 if (StatsManager.SimExtraStats != null)
352 { 358 {