aboutsummaryrefslogtreecommitdiff
path: root/src/server/authserver/Server/BattlenetSession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/authserver/Server/BattlenetSession.cpp')
-rw-r--r--src/server/authserver/Server/BattlenetSession.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/server/authserver/Server/BattlenetSession.cpp b/src/server/authserver/Server/BattlenetSession.cpp
index 2c2026253dc..7abb9df9db9 100644
--- a/src/server/authserver/Server/BattlenetSession.cpp
+++ b/src/server/authserver/Server/BattlenetSession.cpp
@@ -56,7 +56,7 @@ Battlenet::Session::ModuleHandler const Battlenet::Session::ModuleHandlers[MODUL
&Battlenet::Session::HandleResumeModule,
};
-Battlenet::Session::Session(tcp::socket&& socket) : Socket(std::move(socket), std::size_t(BufferSizes::Read)), _accountId(0), _accountName(), _locale(),
+Battlenet::Session::Session(tcp::socket&& socket) : Socket(std::move(socket)), _accountId(0), _accountName(), _locale(),
_os(), _build(0), _gameAccountId(0), _gameAccountName(), _accountSecurityLevel(SEC_PLAYER), I(), s(), v(), b(), B(), K(),
_reconnectProof(), _crypt(), _authed(false)
{
@@ -537,9 +537,9 @@ bool Battlenet::Session::HandleRealmJoinRequest(PacketHeader& header, BitStream&
return true;
}
-void Battlenet::Session::ReadDataHandler()
+void Battlenet::Session::ReadHandler()
{
- BitStream packet(MoveData());
+ BitStream packet(std::move(GetReadBuffer()));
_crypt.DecryptRecv(packet.GetBuffer(), packet.GetSize());
while (!packet.IsRead())
@@ -581,13 +581,14 @@ void Battlenet::Session::ReadDataHandler()
}
}
- AsyncReadData(size_t(BufferSizes::Read));
+ GetReadBuffer().Resize(size_t(BufferSizes::Read));
+ AsyncRead();
}
void Battlenet::Session::Start()
{
TC_LOG_TRACE("server.battlenet", "Battlenet::Session::Start");
- AsyncReadData(size_t(BufferSizes::Read));
+ AsyncRead();
}
void Battlenet::Session::AsyncWrite(ServerPacket* packet)
@@ -602,16 +603,15 @@ void Battlenet::Session::AsyncWrite(ServerPacket* packet)
packet->Write();
- std::lock_guard<std::mutex> guard(_writeLock);
+ MessageBuffer buffer;
+ buffer.Write(packet->GetData(), packet->GetSize());
+ delete packet;
- _crypt.EncryptSend(packet->GetData(), packet->GetSize());
+ std::unique_lock<std::mutex> guard(_writeLock);
- bool needsWriteStart = _writeQueue.empty();
+ _crypt.EncryptSend(buffer.GetReadPointer(), buffer.GetActiveSize());
- _writeQueue.push(packet);
-
- if (needsWriteStart)
- BattlenetSocket::AsyncWrite(_writeQueue.front());
+ QueuePacket(std::move(buffer), guard);
}
inline void ReplaceResponse(Battlenet::ServerPacket** oldResponse, Battlenet::ServerPacket* newResponse)