diff options
author | Spp <none@none> | 2010-09-16 18:53:25 +0200 |
---|---|---|
committer | Spp <none@none> | 2010-09-16 18:53:25 +0200 |
commit | 5ec5d5b6be167358937e0426d74e8bc59d4de957 (patch) | |
tree | 93bae1c19dc42a80b609b6a48b97a0f6bff8b2db /src | |
parent | 4d88ce57d25579c23e0d042d8d55a9cc207fba9f (diff) |
Core/Dungeon Finder: add safe check in first call to FindNewGroup (Avoids Thousands of recursive calls
)
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DungeonFinding/LFGMgr.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp index 41572b3644f..af83c1cf986 100644 --- a/src/server/game/DungeonFinding/LFGMgr.cpp +++ b/src/server/game/DungeonFinding/LFGMgr.cpp @@ -779,9 +779,22 @@ void LFGMgr::FindNewGroups(LfgGuidList &check, LfgGuidList all, LfgProposalList if (!check.size() || check.size() > MAXGROUPSIZE) return; + if (check.size() == 1) // Consistency check + { + uint64 guid = *check.begin(); + LfgQueueInfoMap::iterator itQueue = m_QueueInfoMap.find(guid); + if (itQueue == m_QueueInfoMap.end()) + { + sLog.outError("LFGMgr::FindNewGroups: [" UI64FMTD "] is not queued but listed as queued!", guid); + RemoveFromQueue(guid); + return; + } + } + sLog.outDebug("LFGMgr::FindNewGroup: (%s) - all(%s)", ConcatenateGuids(check).c_str(), ConcatenateGuids(all).c_str()); - LfgGuidList compatibles; + // Check individual compatibilities + LfgGuidList compatibles; for (LfgGuidList::iterator it = all.begin(); it != all.end(); ++it) { check.push_back(*it); |