diff options
author | Dr Scofield | 2009-05-19 18:46:20 +0000 |
---|---|---|
committer | Dr Scofield | 2009-05-19 18:46:20 +0000 |
commit | 14f0d5e77f65e0a0a4bbdbee0d51cd85e2d74b5d (patch) | |
tree | 88c8a116a0a5f28d2e5ece5f61b62c35d2cb1e37 | |
parent | From: Alan Webb <alan_webb@us.ibm.com> (diff) | |
download | opensim-SC-14f0d5e77f65e0a0a4bbdbee0d51cd85e2d74b5d.zip opensim-SC-14f0d5e77f65e0a0a4bbdbee0d51cd85e2d74b5d.tar.gz opensim-SC-14f0d5e77f65e0a0a4bbdbee0d51cd85e2d74b5d.tar.bz2 opensim-SC-14f0d5e77f65e0a0a4bbdbee0d51cd85e2d74b5d.tar.xz |
trying to fix exception with in LLPacketQueue probably caused by
missing locks where the queue was modified.
-rw-r--r-- | OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs index 594a943..4a94814 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLPacketQueue.cs | |||
@@ -189,7 +189,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
189 | } | 189 | } |
190 | 190 | ||
191 | if (item.Sequence != 0) | 191 | if (item.Sequence != 0) |
192 | contents.Add(item.Sequence); | 192 | lock(contents) contents.Add(item.Sequence); |
193 | 193 | ||
194 | lock (this) | 194 | lock (this) |
195 | { | 195 | { |
@@ -241,7 +241,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
241 | item.TickCount = System.Environment.TickCount; | 241 | item.TickCount = System.Environment.TickCount; |
242 | if (item.Sequence == 0) | 242 | if (item.Sequence == 0) |
243 | return item; | 243 | return item; |
244 | lock (contents) | 244 | lock(contents) |
245 | { | 245 | { |
246 | if (contents.Contains(item.Sequence)) | 246 | if (contents.Contains(item.Sequence)) |
247 | if (contents.Remove(item.Sequence)) | 247 | if (contents.Remove(item.Sequence)) |
@@ -252,13 +252,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
252 | 252 | ||
253 | public void Cancel(uint sequence) | 253 | public void Cancel(uint sequence) |
254 | { | 254 | { |
255 | while (contents.Remove(sequence)) | 255 | lock(contents) while (contents.Remove(sequence)) |
256 | ; | 256 | ; |
257 | } | 257 | } |
258 | 258 | ||
259 | public bool Contains(uint sequence) | 259 | public bool Contains(uint sequence) |
260 | { | 260 | { |
261 | return contents.Contains(sequence); | 261 | lock(contents) return contents.Contains(sequence); |
262 | } | 262 | } |
263 | 263 | ||
264 | public void Flush() | 264 | public void Flush() |
@@ -318,7 +318,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
318 | TextureOutgoingPacketQueue.Clear(); | 318 | TextureOutgoingPacketQueue.Clear(); |
319 | AssetOutgoingPacketQueue.Clear(); | 319 | AssetOutgoingPacketQueue.Clear(); |
320 | SendQueue.Clear(); | 320 | SendQueue.Clear(); |
321 | contents.Clear(); | 321 | lock(contents) contents.Clear(); |
322 | } | 322 | } |
323 | } | 323 | } |
324 | 324 | ||