From 43d188bd1622464192974dc98f756f59a8ec02fe Mon Sep 17 00:00:00 2001 From: Maxim Mamontov Date: Fri, 20 May 2011 17:08:58 +0300 Subject: [PATCH 1/1] Fix error with invalid disconnect reason --- projects/stargazer/user_impl.cpp | 26 +++++++++++--------------- projects/stargazer/user_impl.h | 12 ++++++------ 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/projects/stargazer/user_impl.cpp b/projects/stargazer/user_impl.cpp index 7f2d5e0b..34c922b2 100644 --- a/projects/stargazer/user_impl.cpp +++ b/projects/stargazer/user_impl.cpp @@ -121,7 +121,7 @@ lastWriteDetailedStat = stgTime; property.tariffName.AddBeforeNotifier(&tariffNotifier); property.passive.AddBeforeNotifier(&passiveNotifier); property.cash.AddBeforeNotifier(&cashNotifier); -currIP.AddAfterNotifier(&ipNotifier); +ips.AddAfterNotifier(&ipNotifier); lastScanMessages = 0; @@ -201,7 +201,7 @@ settings = u.settings; property.tariffName.AddBeforeNotifier(&tariffNotifier); property.passive.AddBeforeNotifier(&passiveNotifier); property.cash.AddBeforeNotifier(&cashNotifier); -currIP.AddAfterNotifier(&ipNotifier); +ips.AddAfterNotifier(&ipNotifier); lastScanMessages = 0; @@ -316,8 +316,6 @@ int USER_IMPL::WriteStat() STG_LOCKER lock(&mutex, __FILE__, __LINE__); USER_STAT stat(property.GetStat()); -printfd(__FILE__, "USER::WriteStat()\n"); - if (store->SaveUserStat(stat, login)) { WriteServLog("Cannot write stat for user %s.", login.c_str()); @@ -380,7 +378,7 @@ if (authorizedBy.size()) if (currIP != ip) { // We are already authorized, but with different IP address - errorStr = "User " + login + " alredy authorized with IP address " + inet_ntostring(ip); + errorStr = "User " + login + " already authorized with IP address " + inet_ntostring(ip); return -1; } @@ -391,7 +389,7 @@ if (authorizedBy.size()) // If it's not our IP - throw an error if (u != this) { - errorStr = "IP address " + inet_ntostring(ip) + " alredy in use"; + errorStr = "IP address " + inet_ntostring(ip) + " already in use"; return -1; } } @@ -401,7 +399,7 @@ else if (users->IsIPInIndex(ip)) { // Address is already present in IP-index - errorStr = "IP address " + inet_ntostring(ip) + " alredy in use"; + errorStr = "IP address " + inet_ntostring(ip) + " already in use"; return -1; } @@ -1311,14 +1309,12 @@ user->lastCashAddTime = *const_cast(&stgTime); user->lastCashAdd = newCash - oldCash; } //----------------------------------------------------------------------------- -void CHG_IP_NOTIFIER::Notify(const uint32_t & from, const uint32_t & to) +void CHG_IPS_NOTIFIER::Notify(const USER_IPS & from, const USER_IPS & to) { - printfd(__FILE__, "Change IP from %s to %s\n", inet_ntostring(from).c_str(), inet_ntostring(to).c_str()); - if (from != 0) - if (user->connected) - user->Disconnect(false, "Change IP"); - if (to != 0) - if (user->IsInetable()) - user->Connect(false); + printfd(__FILE__, "Change IP from '%s' to '%s'\n", from.GetIpStr().c_str(), to.GetIpStr().c_str()); + if (user->connected) + user->Disconnect(true, "Change IP"); + if (user->IsInetable()) + user->Connect(true); } //----------------------------------------------------------------------------- diff --git a/projects/stargazer/user_impl.h b/projects/stargazer/user_impl.h index f1dd4175..1aaffc86 100644 --- a/projects/stargazer/user_impl.h +++ b/projects/stargazer/user_impl.h @@ -87,11 +87,11 @@ private: USER_IMPL * user; }; //----------------------------------------------------------------------------- -class CHG_IP_NOTIFIER : public PROPERTY_NOTIFIER_BASE, - private NONCOPYABLE { +class CHG_IPS_NOTIFIER : public PROPERTY_NOTIFIER_BASE, + private NONCOPYABLE { public: - CHG_IP_NOTIFIER(USER_IMPL * u) : user(u) {} - void Notify(const uint32_t & oldCash, const uint32_t & newCash); + CHG_IPS_NOTIFIER(USER_IMPL * u) : user(u) {} + void Notify(const USER_IPS & oldIPs, const USER_IPS & newIPs); private: USER_IMPL * user; @@ -101,7 +101,7 @@ class USER_IMPL : public USER { friend class CHG_PASSIVE_NOTIFIER; friend class CHG_TARIFF_NOTIFIER; friend class CHG_CASH_NOTIFIER; -friend class CHG_IP_NOTIFIER; +friend class CHG_IPS_NOTIFIER; public: USER_IMPL(const SETTINGS_IMPL * settings, const STORE * store, @@ -288,7 +288,7 @@ private: CHG_PASSIVE_NOTIFIER passiveNotifier; CHG_TARIFF_NOTIFIER tariffNotifier; CHG_CASH_NOTIFIER cashNotifier; - CHG_IP_NOTIFIER ipNotifier; + CHG_IPS_NOTIFIER ipNotifier; mutable pthread_mutex_t mutex; -- 2.44.2