aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Server
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2014-07-25 19:35:11 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2014-07-25 19:35:11 +0200
commit5a8e79528f06d8dabe1d038d8e079be29adf7e1e (patch)
tree42f171161adb381638f7ab1c6261f9501f1f3512 /src/server/game/Server
parent339574e2fdcd654280cd06a38466cab44eab5133 (diff)
parentc60bdec16046c0bb908e84039f8b1c22368363bd (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.cpp24
-rw-r--r--src/server/game/Server/WorldSocket.h4
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);