diff options
| author | Vincent-Michael <Vincent_Michael@gmx.de> | 2014-07-25 19:35:11 +0200 |
|---|---|---|
| committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2014-07-25 19:35:11 +0200 |
| commit | 5a8e79528f06d8dabe1d038d8e079be29adf7e1e (patch) | |
| tree | 42f171161adb381638f7ab1c6261f9501f1f3512 /src/server/game/Server | |
| parent | 339574e2fdcd654280cd06a38466cab44eab5133 (diff) | |
| parent | c60bdec16046c0bb908e84039f8b1c22368363bd (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/WorldSocket.cpp | 24 | ||||
| -rw-r--r-- | src/server/game/Server/WorldSocket.h | 4 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index 9790eae69ec..fa83db6b185 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -32,7 +32,7 @@ using boost::asio::ip::tcp; using boost::asio::streambuf; WorldSocket::WorldSocket(tcp::socket&& socket) - : _socket(std::move(socket)), _authSeed(static_cast<uint32>(rand32())), _OverSpeedPings(0), _worldSession(nullptr) + : _socket(std::move(socket)), _authSeed(rand32()), _OverSpeedPings(0), _worldSession(nullptr) { } @@ -83,8 +83,7 @@ void WorldSocket::AsyncReadHeader() else { // _socket.is_open() till returns true even after calling close() - boost::system::error_code socketError; - _socket.close(socketError); + CloseSocket(); } }); } @@ -190,8 +189,7 @@ void WorldSocket::AsyncReadData(size_t dataSize) else { // _socket.is_open() till returns true even after calling close() - boost::system::error_code socketError; - _socket.close(socketError); + CloseSocket(); } }); } @@ -245,7 +243,7 @@ void WorldSocket::AsyncWrite(std::vector<uint8> const& data) AsyncWrite(_writeQueue.front()); } else - _socket.close(); + CloseSocket(); }); } @@ -554,7 +552,7 @@ void WorldSocket::HandlePing(WorldPacket& recvPacket) TC_LOG_ERROR("network", "WorldSocket::HandlePing: %s kicked for over-speed pings (address: %s)", _worldSession->GetPlayerInfo().c_str(), GetRemoteIpAddress().c_str()); - _socket.close(); + CloseSocket(); return; } } @@ -573,7 +571,7 @@ void WorldSocket::HandlePing(WorldPacket& recvPacket) TC_LOG_ERROR("network", "WorldSocket::HandlePing: peer sent CMSG_PING, but is not authenticated or got recently kicked, address = %s", GetRemoteIpAddress().c_str()); - _socket.close(); + CloseSocket(); return; } @@ -581,3 +579,13 @@ void WorldSocket::HandlePing(WorldPacket& recvPacket) packet << ping; return AsyncWrite(packet); } + +void WorldSocket::CloseSocket() +{ + boost::system::error_code socketError; + _socket.close(socketError); + if (socketError) + TC_LOG_DEBUG("network", "WorldSocket::CloseSocket: Player '%s' (%s) errored when closing socket: %i (%s)", + _worldSession ? _worldSession->GetPlayerInfo().c_str() : "unknown", GetRemoteIpAddress().c_str(), + socketError.value(), socketError.message()); +} diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index c0986f88779..085ee98b00d 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -55,8 +55,8 @@ public: std::string GetRemoteIpAddress() const { return _socket.remote_endpoint().address().to_string(); }; uint16 GetRemotePort() const { return _socket.remote_endpoint().port(); } - void CloseSocket() { _socket.close(); }; - bool IsOpen() { return _socket.is_open(); }; + void CloseSocket(); + bool IsOpen() const { return _socket.is_open(); } void AsyncWrite(WorldPacket const& packet); |
