aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
diff options
context:
space:
mode:
authorUbitUmarov2016-07-17 14:15:46 +0100
committerUbitUmarov2016-07-17 14:15:46 +0100
commite881562d34bcd67b4fb09c499b008db576b7e368 (patch)
tree77cc8c9fba51ecea00a6eca3e8a1da8adfc338a8 /OpenSim/Region/ClientStack/Linden/Caps/WebFetchInvDescModule.cs
parentadd a Drop method to PollService Event handlers, Drop requests on connections... (diff)
downloadopensim-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.cs40
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;