From eca10ff5ab43106694d24a518f86476f875ae3f0 Mon Sep 17 00:00:00 2001 From: DarthArgus Date: Sun, 1 Jan 2017 01:46:34 +0000 Subject: [PATCH] fix the character mismatching and orphaning issue; we still should tidy the mixed use of StationId, uint32 (typedef override to unsigned long by SOE), long, and unsigned long for the station id value all over the code base...way to go, Smed --- .../src/shared/ClientConnection.cpp | 15 +++++++++------ .../src/shared/ClientConnection.h | 2 +- .../LoginServer/src/shared/ClientConnection.cpp | 6 +++--- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/engine/server/application/ConnectionServer/src/shared/ClientConnection.cpp b/engine/server/application/ConnectionServer/src/shared/ClientConnection.cpp index 21af7631..1f31a950 100755 --- a/engine/server/application/ConnectionServer/src/shared/ClientConnection.cpp +++ b/engine/server/application/ConnectionServer/src/shared/ClientConnection.cpp @@ -396,11 +396,14 @@ void ClientConnection::handleClientIdMessage(const ClientIdMsg& msg) } else { - m_suid = atoi(m_accountName.c_str()); - if (m_suid == 0) - { - std::hash h; - m_suid = h(m_accountName.c_str()); + if (!m_suid) { + m_suid = atoi(m_accountName.c_str()); + if (m_suid == 0) + { + + std::hash h; + m_suid = h(m_accountName.c_str()); + } } onValidateClient(m_suid, m_accountName, m_isSecure, nullptr, ConfigConnectionServer::getDefaultGameFeatures(), ConfigConnectionServer::getDefaultSubscriptionFeatures(), 0, 0, 0, 0, ConfigConnectionServer::getFakeBuddyPoints()); } @@ -1462,7 +1465,7 @@ void ClientConnection::onCharacterValidated(bool isValid, const NetworkId &chara //------------------------------------------------------------------------------------------ -void ClientConnection::onValidateClient (uint32 suid, const std::string & username, bool secure, const char* id, const uint32 gameFeatures, const uint32 subscriptionFeatures, unsigned int entitlementTotalTime, unsigned int entitlementEntitledTime, unsigned int entitlementTotalTimeSinceLastLogin, unsigned int entitlementEntitledTimeSinceLastLogin, int buddyPoints) +void ClientConnection::onValidateClient (StationId suid, const std::string & username, bool secure, const char* id, const uint32 gameFeatures, const uint32 subscriptionFeatures, unsigned int entitlementTotalTime, unsigned int entitlementEntitledTime, unsigned int entitlementTotalTimeSinceLastLogin, unsigned int entitlementEntitledTimeSinceLastLogin, int buddyPoints) { UNREF(id); m_sessionValidated = true; diff --git a/engine/server/application/ConnectionServer/src/shared/ClientConnection.h b/engine/server/application/ConnectionServer/src/shared/ClientConnection.h index a0184cec..384f41b6 100755 --- a/engine/server/application/ConnectionServer/src/shared/ClientConnection.h +++ b/engine/server/application/ConnectionServer/src/shared/ClientConnection.h @@ -91,7 +91,7 @@ public: void handleGameServerForLoginMessage(uint32 serverId); void onIdValidated(bool canLogin, bool canCreateRegularCharacter, bool canCreateJediCharacter, bool canSkipTutorial, std::vector > const & consumedRewardEvents, std::vector > const & claimedRewardItems); - void onValidateClient (uint32 id, const std::string & username, bool, const char*, uint32 gameFeatures, uint32 subscriptionFeatures, unsigned int entitlementTotalTime, unsigned int entitlementEntitledTime, unsigned int entitlementTotalTimeSinceLastLogin, unsigned int entitlementEntitledTimeSinceLastLogin, int buddyPoints); + void onValidateClient (StationId id, const std::string & username, bool, const char*, uint32 gameFeatures, uint32 subscriptionFeatures, unsigned int entitlementTotalTime, unsigned int entitlementEntitledTime, unsigned int entitlementTotalTimeSinceLastLogin, unsigned int entitlementEntitledTimeSinceLastLogin, int buddyPoints); void onCharacterValidated(bool isValid, const NetworkId &character, const std::string &characterName, const NetworkId &container, const std::string &scene, const Vector &coordinates); static std::string describeAccount(const ClientConnection *); diff --git a/engine/server/application/LoginServer/src/shared/ClientConnection.cpp b/engine/server/application/LoginServer/src/shared/ClientConnection.cpp index 41ac293c..1fc22180 100755 --- a/engine/server/application/LoginServer/src/shared/ClientConnection.cpp +++ b/engine/server/application/LoginServer/src/shared/ClientConnection.cpp @@ -194,8 +194,8 @@ void ClientConnection::validateClient(const std::string &id, const std::string & parentAccount = api.getString("mainAccount"); childAccounts = api.getStringMap("subAccounts"); - user_id = api.getNullableValue("user_id"); - parent_id = api.getNullableValue("parent_id"); + user_id = static_cast(api.getNullableValue("user_id")); + parent_id = static_cast(api.getNullableValue("parent_id")); } else { std::string msg(api.getString("message")); if (msg.empty()) { @@ -227,7 +227,7 @@ void ClientConnection::validateClient(const std::string &id, const std::string & } for (auto i : childAccounts) { - StationId child_id = i.first; + StationId child_id = static_cast(i.first); std::string child(i.second); if (!child.empty()) {