diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Accounts/RBAC.cpp | 1 | ||||
-rw-r--r-- | src/server/game/Accounts/RBAC.h | 2 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocket.cpp | 15 | ||||
-rw-r--r-- | src/server/game/Server/WorldSocket.h | 2 | ||||
-rw-r--r-- | src/server/shared/Networking/Socket.h | 2 |
5 files changed, 13 insertions, 9 deletions
diff --git a/src/server/game/Accounts/RBAC.cpp b/src/server/game/Accounts/RBAC.cpp index 3f5cd6b38cf..c520564f0fa 100644 --- a/src/server/game/Accounts/RBAC.cpp +++ b/src/server/game/Accounts/RBAC.cpp @@ -17,7 +17,6 @@ #include "RBAC.h" #include "AccountMgr.h" -#include "DatabaseEnv.h" #include "Log.h" namespace rbac diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index c184fe7f6d5..4acadd7f2b4 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -40,7 +40,7 @@ #ifndef _RBAC_H #define _RBAC_H -#include "Define.h" +#include "DatabaseEnv.h" #include <string> #include <set> #include <map> diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 0448059f43d..6d7e41e8af8 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -40,8 +40,11 @@ void WorldSocket::Start() stmt->setString(0, ip_address); stmt->setUInt32(1, inet_addr(ip_address.c_str())); - _queryCallback = std::bind(&WorldSocket::CheckIpCallback, this, std::placeholders::_1); - _queryFuture = LoginDatabase.AsyncQuery(stmt); + { + std::lock_guard<std::mutex> guard(_queryLock); + _queryCallback = io_service().wrap(std::bind(&WorldSocket::CheckIpCallback, this, std::placeholders::_1)); + _queryFuture = LoginDatabase.AsyncQuery(stmt); + } } void WorldSocket::CheckIpCallback(PreparedQueryResult result) @@ -79,7 +82,7 @@ bool WorldSocket::Update() return false; { - std::lock_guard<std::mutex> lock(_queryLock); + std::lock_guard<std::mutex> guard(_queryLock); if (_queryFuture.valid() && _queryFuture.wait_for(std::chrono::seconds(0)) == std::future_status::ready) { auto callback = std::move(_queryCallback); @@ -394,8 +397,8 @@ void WorldSocket::HandleAuthSession(WorldPacket& recvPacket) stmt->setString(1, authSession->Account); { - std::lock_guard<std::mutex> lock(_queryLock); - _queryCallback = std::bind(&WorldSocket::HandleAuthSessionCallback, this, authSession, std::placeholders::_1); + std::lock_guard<std::mutex> guard(_queryLock); + _queryCallback = io_service().wrap(std::bind(&WorldSocket::HandleAuthSessionCallback, this, authSession, std::placeholders::_1)); _queryFuture = LoginDatabase.AsyncQuery(stmt); } } @@ -554,7 +557,7 @@ void WorldSocket::HandleAuthSessionCallback(std::shared_ptr<AuthSession> authSes if (wardenActive) _worldSession->InitWarden(&account.SessionKey, account.OS); - _queryCallback = std::bind(&WorldSocket::LoadSessionPermissionsCallback, this, std::placeholders::_1); + _queryCallback = io_service().wrap(std::bind(&WorldSocket::LoadSessionPermissionsCallback, this, std::placeholders::_1)); _queryFuture = _worldSession->LoadPermissionsAsync(); } diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index e23f41ff27a..35941f15154 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -99,7 +99,7 @@ private: std::mutex _queryLock; PreparedQueryResultFuture _queryFuture; - std::function<void(PreparedQueryResult)> _queryCallback; + std::function<void(PreparedQueryResult&&)> _queryCallback; std::string _ipCountry; }; diff --git a/src/server/shared/Networking/Socket.h b/src/server/shared/Networking/Socket.h index 1989411bccb..3f588298617 100644 --- a/src/server/shared/Networking/Socket.h +++ b/src/server/shared/Networking/Socket.h @@ -160,6 +160,8 @@ protected: MessageBuffer _writeBuffer; #endif + boost::asio::io_service& io_service() { return _socket.get_io_service(); } + private: void ReadHandlerInternal(boost::system::error_code error, size_t transferredBytes) { |