diff options
author | UbitUmarov | 2016-07-17 14:15:46 +0100 |
---|---|---|
committer | UbitUmarov | 2016-07-17 14:15:46 +0100 |
commit | e881562d34bcd67b4fb09c499b008db576b7e368 (patch) | |
tree | 77cc8c9fba51ecea00a6eca3e8a1da8adfc338a8 /OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs | |
parent | add a Drop method to PollService Event handlers, Drop requests on connections... (diff) | |
download | opensim-SC-e881562d34bcd67b4fb09c499b008db576b7e368.zip opensim-SC-e881562d34bcd67b4fb09c499b008db576b7e368.tar.gz opensim-SC-e881562d34bcd67b4fb09c499b008db576b7e368.tar.bz2 opensim-SC-e881562d34bcd67b4fb09c499b008db576b7e368.tar.xz |
fix drop on delayed events processing
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs index bde94e6..ed5b3dd 100644 --- a/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs +++ b/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs | |||
@@ -250,8 +250,8 @@ namespace OpenSim.Region.ClientStack.Linden | |||
250 | { | 250 | { |
251 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 251 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
252 | 252 | ||
253 | private Dictionary<UUID, Hashtable> responses = | 253 | private Dictionary<UUID, Hashtable> responses = new Dictionary<UUID, Hashtable>(); |
254 | new Dictionary<UUID, Hashtable>(); | 254 | private HashSet<UUID> dropedResponses = new HashSet<UUID>(); |
255 | 255 | ||
256 | private WebFetchInvDescModule m_module; | 256 | private WebFetchInvDescModule m_module; |
257 | 257 | ||
@@ -261,7 +261,16 @@ namespace OpenSim.Region.ClientStack.Linden | |||
261 | m_module = module; | 261 | m_module = module; |
262 | 262 | ||
263 | HasEvents = (x, y) => { lock (responses) return responses.ContainsKey(x); }; | 263 | HasEvents = (x, y) => { lock (responses) return responses.ContainsKey(x); }; |
264 | Drop = (x, y) => { lock (responses) responses.Remove(x); }; | 264 | |
265 | Drop = (x, y) => | ||
266 | { | ||
267 | lock (responses) | ||
268 | { | ||
269 | responses.Remove(x); | ||
270 | lock(dropedResponses) | ||
271 | dropedResponses.Add(x); | ||
272 | } | ||
273 | }; | ||
265 | 274 | ||
266 | GetEvents = (x, y) => | 275 | GetEvents = (x, y) => |
267 | { | 276 | { |
@@ -367,6 +376,19 @@ namespace OpenSim.Region.ClientStack.Linden | |||
367 | 376 | ||
368 | UUID requestID = requestinfo.reqID; | 377 | UUID requestID = requestinfo.reqID; |
369 | 378 | ||
379 | |||
380 | lock(responses) | ||
381 | { | ||
382 | lock(dropedResponses) | ||
383 | { | ||
384 | if(dropedResponses.Contains(requestID)) | ||
385 | { | ||
386 | dropedResponses.Remove(requestID); | ||
387 | return; | ||
388 | } | ||
389 | } | ||
390 | } | ||
391 | |||
370 | Hashtable response = new Hashtable(); | 392 | Hashtable response = new Hashtable(); |
371 | 393 | ||
372 | response["int_response_code"] = 200; | 394 | response["int_response_code"] = 200; |
@@ -379,6 +401,18 @@ namespace OpenSim.Region.ClientStack.Linden | |||
379 | 401 | ||
380 | lock (responses) | 402 | lock (responses) |
381 | { | 403 | { |
404 | lock(dropedResponses) | ||
405 | { | ||
406 | if(dropedResponses.Contains(requestID)) | ||
407 | { | ||
408 | dropedResponses.Remove(requestID); | ||
409 | requestinfo.folders.Clear(); | ||
410 | requestinfo.request.Clear(); | ||
411 | WebFetchInvDescModule.ProcessedRequestsCount++; | ||
412 | return; | ||
413 | } | ||
414 | } | ||
415 | |||
382 | if (responses.ContainsKey(requestID)) | 416 | if (responses.ContainsKey(requestID)) |
383 | m_log.WarnFormat("[FETCH INVENTORY DESCENDENTS2 MODULE]: Caught in the act of loosing responses! Please report this on mantis #7054"); | 417 | m_log.WarnFormat("[FETCH INVENTORY DESCENDENTS2 MODULE]: Caught in the act of loosing responses! Please report this on mantis #7054"); |
384 | responses[requestID] = response; | 418 | responses[requestID] = response; |