* fixed delayed CMSG_CHANNEL_LIST opcode spam to server if a channel list contained some guids which names were not yet known.

This commit is contained in:
false_genesis 2008-09-30 23:09:35 +00:00
parent aa0450df9e
commit 8af84b8c87
2 changed files with 5 additions and 3 deletions

View File

@ -229,16 +229,18 @@ void Channel::HandleListRequest(WorldPacket& recvPacket)
for(uint32 i = 0; i < size; i++) for(uint32 i = 0; i < size; i++)
{ {
recvPacket >> guid >> mode; recvPacket >> guid >> mode;
// all player names in this packet must be known before // all player names in this packet must be known before we can continue
if(_worldSession->GetOrRequestPlayerName(guid).empty()) if(_worldSession->GetOrRequestPlayerName(guid).empty())
{ {
_worldSession->_DelayWorldPacket(recvPacket, uint32(_worldSession->GetLagMS() * 1.2f));
must_delay = true; must_delay = true;
} }
cpl[guid] = mode; cpl[guid] = mode;
} }
if(must_delay) if(must_delay)
{
_worldSession->_DelayWorldPacket(recvPacket, uint32(_worldSession->GetLagMS() * 1.2f));
return; return;
}
// store list of GUIDs in: @ChannelList - see below // store list of GUIDs in: @ChannelList - see below
DefList *l = _worldSession->GetInstance()->GetScripts()->lists.Get("@ChannelList"); DefList *l = _worldSession->GetInstance()->GetScripts()->lists.Get("@ChannelList");