diff options
| author | Azazel <azazel.kon@gmail.com> | 2011-02-17 19:47:08 +0600 |
|---|---|---|
| committer | Azazel <azazel.kon@gmail.com> | 2011-02-17 19:47:08 +0600 |
| commit | 4dc1eaa47cdeb992aa51db8ad019cff9ff595fe8 (patch) | |
| tree | 44f7cbcd60bf558d4c290dcaf759edd511af29df /src/server/game/Server | |
| parent | aaa9b069d9982355d8371fdaad45fd7fd560a192 (diff) | |
Core/Misc: improve error log messages by adding more info. Specially for Aokromes.
Diffstat (limited to 'src/server/game/Server')
| -rwxr-xr-x | src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp | 13 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSession.cpp | 28 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSession.h | 2 | ||||
| -rwxr-xr-x | src/server/game/Server/WorldSocket.cpp | 17 |
4 files changed, 39 insertions, 21 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp index ca7efa7c032..7671a737233 100755 --- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp @@ -295,13 +295,20 @@ void WorldSession::HandleCharCreateOpcode(WorldPacket & recv_data) } ChrClassesEntry const* classEntry = sChrClassesStore.LookupEntry(class_); - ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race_); + if (!classEntry) + { + data << (uint8)CHAR_CREATE_FAILED; + SendPacket(&data); + sLog->outError("Class (%u) not found in DBC while creating new char for account (ID: %u): wrong DBC files or cheater?", class_, GetAccountId()); + return; + } - if (!classEntry || !raceEntry) + ChrRacesEntry const* raceEntry = sChrRacesStore.LookupEntry(race_); + if (!raceEntry) { data << (uint8)CHAR_CREATE_FAILED; SendPacket(&data); - sLog->outError("Class: %u or Race %u not found in DBC (Wrong DBC files?) or Cheater?", class_, race_); + sLog->outError("Race (%u) not found in DBC while creating new char for account (ID: %u): wrong DBC files or cheater?", race_, GetAccountId()); return; } diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 7a0e3a6b51c..3d92be5f699 100755 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -189,12 +189,11 @@ void WorldSession::QueuePacket(WorldPacket *new_packet) } /// Logging helper for unexpected opcodes -void WorldSession::LogUnexpectedOpcode(WorldPacket *packet, const char *reason) +void WorldSession::LogUnexpectedOpcode(WorldPacket *packet, const char* status, const char *reason) { - sLog->outError("SESSION: received unexpected opcode %s (0x%.4X) %s", - LookupOpcodeName(packet->GetOpcode()), - packet->GetOpcode(), - reason); + sLog->outError("SESSION (account: %u, guidlow: %u, char: %s): received unexpected opcode %s (0x%.4X, status: %s) %s", + GetAccountId(), m_GUIDLow, _player ? _player->GetName() : "<none>", + LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode(), status, reason); } /// Logging helper for unexpected opcodes @@ -238,7 +237,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) { // skip STATUS_LOGGEDIN opcode unexpected errors if player logout sometime ago - this can be network lag delayed packets if (!m_playerRecentlyLogout) - LogUnexpectedOpcode(packet, "the player has not logged in yet"); + LogUnexpectedOpcode(packet, "STATUS_LOGGEDIN", "the player has not logged in yet"); } else if (_player->IsInWorld()) { @@ -251,7 +250,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) break; case STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT: if (!_player && !m_playerRecentlyLogout) - LogUnexpectedOpcode(packet, "the player has not logged in yet and not recently logout"); + LogUnexpectedOpcode(packet, "STATUS_LOGGEDIN_OR_RECENTLY_LOGGOUT", + "the player has not logged in yet and not recently logout"); else { // not expected _player or must checked in packet hanlder @@ -263,9 +263,9 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) break; case STATUS_TRANSFER: if (!_player) - LogUnexpectedOpcode(packet, "the player has not logged in yet"); + LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player has not logged in yet"); else if (_player->IsInWorld()) - LogUnexpectedOpcode(packet, "the player is still in world"); + LogUnexpectedOpcode(packet, "STATUS_TRANSFER", "the player is still in world"); else { sScriptMgr->OnPacketReceive(m_Socket, WorldPacket(*packet)); @@ -278,7 +278,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) // prevent cheating with skip queue wait if (m_inQueue) { - LogUnexpectedOpcode(packet, "the player not pass queue yet"); + LogUnexpectedOpcode(packet, "STATUS_AUTHED", "the player not pass queue yet"); break; } @@ -293,10 +293,14 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater) LogUnprocessedTail(packet); break; case STATUS_NEVER: - sLog->outError("SESSION: received not allowed opcode %s (0x%.4X)", LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); + sLog->outError("SESSION (account: %u, guidlow: %u, char: %s): received not allowed opcode %s (0x%.4X)", + GetAccountId(), m_GUIDLow, _player ? _player->GetName() : "<none>", + LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); break; case STATUS_UNHANDLED: - sLog->outDebug("SESSION: received not handled opcode %s (0x%.4X)", LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); + sLog->outDebug("SESSION (account: %u, guidlow: %u, char: %s): received not handled opcode %s (0x%.4X)", + GetAccountId(), m_GUIDLow, _player ? _player->GetName() : "<none>", + LookupOpcodeName(packet->GetOpcode()), packet->GetOpcode()); break; } } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 926b0ac32e9..b16d61f8da7 100755 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -882,7 +882,7 @@ class WorldSession void moveItems(Item* myItems[], Item* hisItems[]); // logging helper - void LogUnexpectedOpcode(WorldPacket *packet, const char * reason); + void LogUnexpectedOpcode(WorldPacket *packet, const char* status, const char *reason); void LogUnprocessedTail(WorldPacket *packet); uint32 m_GUIDLow; // set loggined or recently logout player (while m_playerRecentlyLogout set) diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 084eade7555..ba119e324a2 100755 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -494,8 +494,12 @@ int WorldSocket::handle_input_header (void) if ((header.size < 4) || (header.size > 10240) || (header.cmd > 10240)) { - sLog->outError ("WorldSocket::handle_input_header: client sent malformed packet size = %d , cmd = %d", - header.size, header.cmd); + Player *_player = m_Session ? m_Session->GetPlayer() : NULL; + sLog->outError ("WorldSocket::handle_input_header(): client (account: %u, char [GUID: %u, name: %s]) sent malformed packet (size: %d , cmd: %d)", + m_Session ? m_Session->GetAccountId() : 0, + _player ? _player->GetGUIDLow() : 0, + _player ? _player->GetName() : "<none>", + header.size, header.cmd); errno = EINVAL; return -1; @@ -1030,9 +1034,12 @@ int WorldSocket::HandlePing (WorldPacket& recvPacket) if (m_Session && m_Session->GetSecurity() == SEC_PLAYER) { - sLog->outError ("WorldSocket::HandlePing: Player kicked for " - "over-speed pings address = %s", - GetRemoteAddress().c_str()); + Player* _player = m_Session->GetPlayer(); + sLog->outError("WorldSocket::HandlePing: Player (account: %u, GUID: %u, name: %s) kicked for over-speed pings (address: %s)", + m_Session->GetAccountId(), + _player ? _player->GetGUIDLow() : 0, + _player ? _player->GetName() : "<none>", + GetRemoteAddress().c_str()); return -1; } |
