diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-11-21 12:25:22 +0100 |
commit | b888b1b09f71a8b8b4a9d45c804a1f164fb65ac3 (patch) | |
tree | ba507c4c1c5e8487bd223afbde44ecf9eeac162e /src/server/shared/Realm | |
parent | 8c072b93af3a4efcbde21cc85fedcf7fa48fa7b4 (diff) |
Core/Calendar: Implement different timezone support for ingame calendar
Closes #8390
Closes #29427
Diffstat (limited to 'src/server/shared/Realm')
-rw-r--r-- | src/server/shared/Realm/RealmList.cpp | 10 | ||||
-rw-r--r-- | src/server/shared/Realm/RealmList.h | 4 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/server/shared/Realm/RealmList.cpp b/src/server/shared/Realm/RealmList.cpp index 3d72418c10b..779bb6fca09 100644 --- a/src/server/shared/Realm/RealmList.cpp +++ b/src/server/shared/Realm/RealmList.cpp @@ -369,7 +369,7 @@ std::vector<uint8> RealmList::GetRealmList(uint32 build, std::string const& subR } uint32 RealmList::JoinRealm(uint32 realmAddress, uint32 build, boost::asio::ip::address const& clientAddress, std::array<uint8, 32> const& clientSecret, - LocaleConstant locale, std::string const& os, std::string accountName, bgs::protocol::game_utilities::v1::ClientResponse* response) const + LocaleConstant locale, std::string const& os, Minutes timezoneOffset, std::string const& accountName, bgs::protocol::game_utilities::v1::ClientResponse* response) const { std::shared_lock<std::shared_mutex> lock(_realmsMutex); if (Realm const* realm = GetRealm(Battlenet::RealmHandle(realmAddress))) @@ -400,15 +400,17 @@ uint32 RealmList::JoinRealm(uint32 realmAddress, uint32 build, boost::asio::ip:: std::array<uint8, 32> serverSecret = Trinity::Crypto::GetRandomBytes<32>(); std::array<uint8, 64> keyData; - memcpy(&keyData[0], clientSecret.data(), 32); - memcpy(&keyData[32], serverSecret.data(), 32); + auto keyDestItr = keyData.begin(); + keyDestItr = std::copy(clientSecret.begin(), clientSecret.end(), keyDestItr); + keyDestItr = std::copy(serverSecret.begin(), serverSecret.end(), keyDestItr); LoginDatabasePreparedStatement* stmt = LoginDatabase.GetPreparedStatement(LOGIN_UPD_BNET_GAME_ACCOUNT_LOGIN_INFO); stmt->setBinary(0, keyData); stmt->setString(1, clientAddress.to_string()); stmt->setUInt8(2, locale); stmt->setString(3, os); - stmt->setString(4, accountName); + stmt->setInt16(4, timezoneOffset.count()); + stmt->setString(5, accountName); LoginDatabase.DirectExecute(stmt); bgs::protocol::Attribute* attribute = response->add_attribute(); diff --git a/src/server/shared/Realm/RealmList.h b/src/server/shared/Realm/RealmList.h index 973dd913d7a..a1262d7e913 100644 --- a/src/server/shared/Realm/RealmList.h +++ b/src/server/shared/Realm/RealmList.h @@ -19,6 +19,7 @@ #define _REALMLIST_H #include "Define.h" +#include "Duration.h" #include "Realm.h" #include <array> #include <map> @@ -91,7 +92,8 @@ public: std::vector<uint8> GetRealmEntryJSON(Battlenet::RealmHandle const& id, uint32 build) const; std::vector<uint8> GetRealmList(uint32 build, std::string const& subRegion) const; uint32 JoinRealm(uint32 realmAddress, uint32 build, boost::asio::ip::address const& clientAddress, std::array<uint8, 32> const& clientSecret, - LocaleConstant locale, std::string const& os, std::string accountName, bgs::protocol::game_utilities::v1::ClientResponse* response) const; + LocaleConstant locale, std::string const& os, Minutes timezoneOffset, std::string const& accountName, + bgs::protocol::game_utilities::v1::ClientResponse* response) const; private: RealmList(); |