diff options
author | Teravus Ovares | 2009-01-06 00:57:33 +0000 |
---|---|---|
committer | Teravus Ovares | 2009-01-06 00:57:33 +0000 |
commit | 4f0bbf5d6111e273d5d1841f96695c34d4c432da (patch) | |
tree | badccf8ae34bb844b8983ef64aee0b408deac07b /OpenSim/Region | |
parent | * Added a way for the sim stats reporter to say to the scene that the stats a... (diff) | |
download | opensim-SC-4f0bbf5d6111e273d5d1841f96695c34d4c432da.zip opensim-SC-4f0bbf5d6111e273d5d1841f96695c34d4c432da.tar.gz opensim-SC-4f0bbf5d6111e273d5d1841f96695c34d4c432da.tar.bz2 opensim-SC-4f0bbf5d6111e273d5d1841f96695c34d4c432da.tar.xz |
* Kill an endless loop in the Instant Message delivery system
* Must compare user region with previous calling of the same method to determine if we should look the user up.
* The first time, the previous region handle will be 0, so therefore it'll use the cached version.
* The second time, previousRegionHandle will be what we looked up on the first round
* The third time, it'll say.. we tried to deliver it once with or without lookup, we tried to deliver it a second time with lookup, and failed both times so end!
Diffstat (limited to 'OpenSim/Region')
-rw-r--r-- | OpenSim/Region/Environment/Modules/Avatar/InstantMessage/MessageTransferModule.cs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/MessageTransferModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/MessageTransferModule.cs index 838d42c..afd6a4c 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/MessageTransferModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/MessageTransferModule.cs | |||
@@ -436,12 +436,20 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage | |||
436 | upd = new UserAgentData(); | 436 | upd = new UserAgentData(); |
437 | upd.AgentOnline = true; | 437 | upd.AgentOnline = true; |
438 | upd.Handle = m_UserRegionMap[toAgentID]; | 438 | upd.Handle = m_UserRegionMap[toAgentID]; |
439 | |||
440 | // We need to compare the current regionhandle with the previous region handle | ||
441 | // or the recursive loop will never end because it will never try to lookup the agent again | ||
442 | if (prevRegionHandle == upd.Handle) | ||
443 | { | ||
444 | lookupAgent = true; | ||
445 | } | ||
439 | } | 446 | } |
440 | else | 447 | else |
441 | { | 448 | { |
442 | lookupAgent = true; | 449 | lookupAgent = true; |
443 | } | 450 | } |
444 | } | 451 | } |
452 | |||
445 | 453 | ||
446 | // Are we needing to look-up an agent? | 454 | // Are we needing to look-up an agent? |
447 | if (lookupAgent) | 455 | if (lookupAgent) |