diff options
author | Shauren <shauren.trinity@gmail.com> | 2014-05-02 13:30:41 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2014-05-02 13:30:41 +0200 |
commit | 2654fd67f32ef8b10cb0f9fcdc5033de62ca9a78 (patch) | |
tree | 49613d2dfbac81be6c8d894e5b800a06d2007261 /src | |
parent | 6955d7c9ad0e55480aa97d9cafd878c6bc3dc426 (diff) |
Core/Battle.net: Refactored FCC writing
Diffstat (limited to 'src')
4 files changed, 13 insertions, 9 deletions
diff --git a/src/server/authserver/Server/BattlenetBitStream.h b/src/server/authserver/Server/BattlenetBitStream.h index d372e0933c2..9d5f4c85f0d 100644 --- a/src/server/authserver/Server/BattlenetBitStream.h +++ b/src/server/authserver/Server/BattlenetBitStream.h @@ -138,10 +138,15 @@ namespace Battlenet } //WriteFloat - void WriteFourCC(char const* fcc) + void WriteFourCC(std::string const& fcc) { - uint32 intVal = *(uint32*)fcc; + uint32 intVal = *(uint32*)fcc.c_str(); + size_t len = fcc.length(); EndianConvertReverse(intVal); + // Add padding + while (len++ < 4) + intVal >>= 8; + Write(intVal, 32); } diff --git a/src/server/authserver/Server/BattlenetManager.cpp b/src/server/authserver/Server/BattlenetManager.cpp index a43512e612e..f8ff5d8989e 100644 --- a/src/server/authserver/Server/BattlenetManager.cpp +++ b/src/server/authserver/Server/BattlenetManager.cpp @@ -64,7 +64,6 @@ void BattlenetMgr::LoadModules() Field* fields = result->Fetch(); Battlenet::ModuleInfo* module = new Battlenet::ModuleInfo(); module->Type = fields[2].GetString(); - module->Region.assign("\0\0EU", 4); HexStrToByteArray(fields[0].GetString(), module->ModuleId); std::string data = fields[4].GetString(); module->DataSize = data.length() / 2; diff --git a/src/server/authserver/Server/BattlenetManager.h b/src/server/authserver/Server/BattlenetManager.h index 9fceb973770..08c98645ebd 100644 --- a/src/server/authserver/Server/BattlenetManager.h +++ b/src/server/authserver/Server/BattlenetManager.h @@ -52,7 +52,7 @@ namespace Battlenet struct ModuleInfo { - ModuleInfo() : DataSize(0), Data(nullptr) { } + ModuleInfo() : Region("EU"), DataSize(0), Data(nullptr) { } ModuleInfo(ModuleInfo const& right) : Type(right.Type), Region(right.Region), DataSize(right.DataSize), Data(nullptr) { memcpy(ModuleId, right.ModuleId, 32); diff --git a/src/server/authserver/Server/BattlenetPackets.cpp b/src/server/authserver/Server/BattlenetPackets.cpp index 68a602d8598..bcb4f4e4898 100644 --- a/src/server/authserver/Server/BattlenetPackets.cpp +++ b/src/server/authserver/Server/BattlenetPackets.cpp @@ -67,7 +67,7 @@ std::string Battlenet::AuthChallenge::ToString() const std::ostringstream stream; stream << "Battlenet::AuthChallenge Program: " << Program << ", Platform: " << Platform << ", Locale: " << Locale; for (Component const& component : Components) - stream << std::endl << "Battlenet::AuthChallenge::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build; + stream << std::endl << "Battlenet::Component Program: " << component.Program << ", Platform: " << component.Platform << ", Build: " << component.Build; if (!Login.empty()) stream << std::endl << "Battlenet::AuthChallenge Login: " << Login; @@ -81,7 +81,7 @@ void Battlenet::ProofRequest::Write() for (ModuleInfo const* info : Modules) { _stream.WriteBytes(info->Type.c_str(), 4); - _stream.WriteFourCC(info->Region.c_str()); + _stream.WriteFourCC(info->Region); _stream.WriteBytes(info->ModuleId, 32); _stream.Write(info->DataSize, 10); _stream.WriteBytes(info->Data, info->DataSize); @@ -93,7 +93,7 @@ std::string Battlenet::ProofRequest::ToString() const std::ostringstream stream; stream << "Battlenet::ProofRequest modules " << Modules.size(); for (ModuleInfo const* module : Modules) - stream << std::endl << "Locale " << module->Region << "ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << "BlobSize " << module->DataSize; + stream << std::endl << "Battlenet::ModuleInfo Locale " << module->Region.c_str() << ", ModuleId " << ByteArrayToHexStr(module->ModuleId, 32) << ", BlobSize " << module->DataSize; return stream.str(); } @@ -138,7 +138,7 @@ void Battlenet::AuthComplete::Write() { ModuleInfo& info = Modules[i]; _stream.WriteBytes(info.Type.c_str(), 4); - _stream.WriteFourCC(info.Region.c_str()); + _stream.WriteFourCC(info.Region); _stream.WriteBytes(info.ModuleId, 32); _stream.Write(info.DataSize, 10); _stream.WriteBytes(info.Data, info.DataSize); @@ -165,7 +165,7 @@ void Battlenet::AuthComplete::Write() { ModuleInfo& info = Modules[0]; _stream.WriteBytes(info.Type.c_str(), 4); - _stream.WriteFourCC(info.Region.c_str()); + _stream.WriteFourCC(info.Region); _stream.WriteBytes(info.ModuleId, 32); _stream.Write(info.DataSize, 10); _stream.WriteBytes(info.Data, info.DataSize); |