diff options
| author | Shauren <shauren.trinity@gmail.com> | 2013-10-07 14:30:37 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2013-10-07 14:30:37 +0200 |
| commit | fca4a5448ac476b942c330108a76032ae242711e (patch) | |
| tree | 81fe500a02353fa5079532fe53c21a4f3a269b82 /src/server/game/Server | |
| parent | 1b56bd1b6a860c325f3e4e76d94dc367429fbb16 (diff) | |
| parent | c8f525c76e162b5b546c91628a1457f9aef43699 (diff) | |
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/game/Server')
| -rw-r--r-- | src/server/game/Server/WorldSession.cpp | 12 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSession.h | 12 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 5 |
3 files changed, 20 insertions, 9 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index 275349c83cb..839e7a2f91e 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -118,6 +118,7 @@ WorldSession::WorldSession(uint32 id, WorldSocket* sock, AccountTypes sec, uint8 m_sessionDbcLocale(sWorld->GetAvailableDbcLocale(locale)), m_sessionDbLocaleIndex(locale), m_latency(0), + m_clientTimeDelay(0), m_TutorialsChanged(false), _filterAddonMessages(false), recruiterId(recruiter), @@ -1128,15 +1129,16 @@ void WorldSession::LoadPermissions() uint32 id = GetAccountId(); std::string name; AccountMgr::GetName(id, name); + uint8 secLevel = GetSecurity(); - _RBACData = new RBACData(id, name, realmID); + _RBACData = new rbac::RBACData(id, name, realmID, secLevel); _RBACData->LoadFromDB(); - TC_LOG_DEBUG(LOG_FILTER_RBAC, "WorldSession::LoadPermissions [AccountId: %u, Name: %s, realmId: %d]", - id, name.c_str(), realmID); + TC_LOG_DEBUG(LOG_FILTER_RBAC, "WorldSession::LoadPermissions [AccountId: %u, Name: %s, realmId: %d, secLevel: %u]", + id, name.c_str(), realmID, secLevel); } -RBACData* WorldSession::GetRBACData() +rbac::RBACData* WorldSession::GetRBACData() { return _RBACData; } @@ -1155,7 +1157,7 @@ bool WorldSession::HasPermission(uint32 permission) void WorldSession::InvalidateRBACData() { - TC_LOG_DEBUG(LOG_FILTER_RBAC, "WorldSession::InvalidateRBACData [AccountId: %u, Name: %s, realmId: %d]", + TC_LOG_DEBUG(LOG_FILTER_RBAC, "WorldSession::Invalidaterbac::RBACData [AccountId: %u, Name: %s, realmId: %d]", _RBACData->GetId(), _RBACData->GetName().c_str(), realmID); delete _RBACData; _RBACData = NULL; diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 871f1df4d05..7b6389698f4 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -41,7 +41,6 @@ class LoginQueryHolder; class Object; class Player; class Quest; -class RBACData; class SpellCastTargets; class Unit; class Warden; @@ -64,6 +63,11 @@ struct LfgRoleCheck; struct LfgUpdateData; } +namespace rbac +{ +class RBACData; +} + enum AccountDataType { GLOBAL_CONFIG_CACHE = 0, // 0x01 g @@ -223,7 +227,7 @@ class WorldSession void SendAuthResponse(uint8 code, bool queued, uint32 queuePos = 0); void SendClientCacheVersion(uint32 version); - RBACData* GetRBACData(); + rbac::RBACData* GetRBACData(); bool HasPermission(uint32 permissionId); void LoadPermissions(); void InvalidateRBACData(); // Used to force LoadPermissions at next HasPermission check @@ -358,6 +362,7 @@ class WorldSession uint32 GetLatency() const { return m_latency; } void SetLatency(uint32 latency) { m_latency = latency; } + void ResetClientTimeDelay() { m_clientTimeDelay = 0; } uint32 getDialogStatus(Player* player, Object* questgiver, uint32 defstatus); time_t m_timeOutTime; @@ -1042,6 +1047,7 @@ class WorldSession LocaleConstant m_sessionDbcLocale; LocaleConstant m_sessionDbLocaleIndex; uint32 m_latency; + uint32 m_clientTimeDelay; AccountData m_accountData[NUM_ACCOUNT_DATA_TYPES]; uint32 m_Tutorials[MAX_ACCOUNT_TUTORIAL_VALUES]; bool m_TutorialsChanged; @@ -1053,7 +1059,7 @@ class WorldSession ACE_Based::LockedQueue<WorldPacket*, ACE_Thread_Mutex> _recvQueue; time_t timeLastWhoCommand; z_stream_s* _compressionStream; - RBACData* _RBACData; + rbac::RBACData* _RBACData; }; #endif /// @} diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index a1e084bc286..461b7f56dde 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -1052,7 +1052,7 @@ int WorldSocket::HandlePing (WorldPacket& recvPacket) { ACE_GUARD_RETURN (LockType, Guard, m_SessionLock, -1); - if (m_Session && !m_Session->HasPermission(RBAC_PERM_SKIP_CHECK_OVERSPEED_PING)) + if (m_Session && !m_Session->HasPermission(rbac::RBAC_PERM_SKIP_CHECK_OVERSPEED_PING)) { TC_LOG_ERROR(LOG_FILTER_NETWORKIO, "WorldSocket::HandlePing: %s kicked for over-speed pings (address: %s)", m_Session->GetPlayerInfo().c_str(), GetRemoteAddress().c_str()); @@ -1070,7 +1070,10 @@ int WorldSocket::HandlePing (WorldPacket& recvPacket) ACE_GUARD_RETURN (LockType, Guard, m_SessionLock, -1); if (m_Session) + { m_Session->SetLatency (latency); + m_Session->ResetClientTimeDelay(); + } else { TC_LOG_ERROR(LOG_FILTER_NETWORKIO, "WorldSocket::HandlePing: peer sent CMSG_PING, " |
