diff options
| author | Shauren <shauren.trinity@gmail.com> | 2014-05-02 02:55:10 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2014-05-02 02:55:10 +0200 |
| commit | 6955d7c9ad0e55480aa97d9cafd878c6bc3dc426 (patch) | |
| tree | 2a0b11c84a75607ac9db4c6f0d2382d7157230a7 /src/server/authserver/Server/BattlenetSocket.cpp | |
| parent | fea9d275fa0ed8f5b43dc54979cdd5a58afc993b (diff) | |
Core/Battle.net
* Fixed AuthResult codes
* Fixed BitStream::WriteBytes size check
* Fixed comparison operator for packet header
* Fixed channel for client packets without channel
* Implemented loading modules from database
Diffstat (limited to 'src/server/authserver/Server/BattlenetSocket.cpp')
| -rw-r--r-- | src/server/authserver/Server/BattlenetSocket.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/server/authserver/Server/BattlenetSocket.cpp b/src/server/authserver/Server/BattlenetSocket.cpp index 04005e30878..edd73080270 100644 --- a/src/server/authserver/Server/BattlenetSocket.cpp +++ b/src/server/authserver/Server/BattlenetSocket.cpp @@ -25,6 +25,32 @@ bool Battlenet::Socket::HandleAuthChallenge(PacketHeader& header, BitStream& pac AuthChallenge info(header, packet); info.Read(); + printf("%s\n", info.ToString().c_str()); + + if (info.Program != "WoW") + { + AuthComplete complete; + complete.SetAuthResult(AUTH_INVALID_PROGRAM); + Send(complete); + return true; + } + + if (!sBattlenetMgr->HasPlatform(info.Platform)) + { + AuthComplete complete; + complete.SetAuthResult(AUTH_INVALID_OS); + Send(complete); + return true; + } + + if (!sBattlenetMgr->HasPlatform(info.Locale)) + { + AuthComplete complete; + complete.SetAuthResult(AUTH_UNSUPPORTED_LANGUAGE); + Send(complete); + return true; + } + for (Component const& component : info.Components) { if (!sBattlenetMgr->HasComponent(&component)) @@ -34,7 +60,7 @@ bool Battlenet::Socket::HandleAuthChallenge(PacketHeader& header, BitStream& pac complete.SetAuthResult(AUTH_INVALID_PROGRAM); else if (!sBattlenetMgr->HasPlatform(component.Platform)) complete.SetAuthResult(AUTH_INVALID_OS); - else if (!sBattlenetMgr->HasBuild(component.Build)) + else complete.SetAuthResult(AUTH_REGION_BAD_VERSION); Send(complete); @@ -42,9 +68,9 @@ bool Battlenet::Socket::HandleAuthChallenge(PacketHeader& header, BitStream& pac } } - printf("%s\n", info.ToString().c_str()); - _accountName = info.Login; + _locale = info.Locale; + _os = info.Platform; ProofRequest request; Send(request); @@ -101,6 +127,8 @@ void Battlenet::Socket::OnRead() header.Opcode = packet.Read<uint32>(6); if (packet.Read<uint32>(1)) _currentChannel = header.Channel = packet.Read<int32>(4); + else + header.Channel = _currentChannel; printf("Battlenet::Socket::OnRead %s\n", header.ToString().c_str()); std::map<PacketHeader, PacketHandler>::const_iterator itr = Handlers.find(header); |
