]> git.stg.codes - stg.git/commitdiff
Allow to assign 0.0.0.0 to multiple users.
authorMaxim Mamontov <faust.madf@gmail.com>
Sun, 28 Jul 2013 12:32:47 +0000 (15:32 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Sun, 28 Jul 2013 12:32:47 +0000 (15:32 +0300)
include/stg/user_ips.h
projects/stargazer/users_impl.cpp

index 264b58960ac2df91e5fa59d991b5583219a8a98a..e55f99fa7fc114460681fcebe87c8639ef2ee259 100644 (file)
@@ -70,6 +70,7 @@ public:
     std::string GetIpStr() const;
     bool IsIPInIPS(uint32_t ip) const;
     bool OnlyOneIP() const;
+    bool IsAnyIP() const;
     size_t  Count() const;
     void Add(const IP_MASK &im);
     void Erase();
@@ -172,6 +173,12 @@ return false;
 }
 //-----------------------------------------------------------------------------
 inline
+bool USER_IPS::IsAnyIP() const
+{
+    return !ips.empty() && ips.front().ip == 0;
+}
+//-----------------------------------------------------------------------------
+inline
 void USER_IPS::Add(const IP_MASK &im)
 {
 ips.push_back(im);
index dfdc86342e4e35c2dfa92527d64fc9ec380f795e..c4f63c6476763548a8f29da093d4ae9aea5f8797 100644 (file)
@@ -702,7 +702,9 @@ std::list<USER_IMPL>::const_iterator iter;
 iter = users.begin();
 while (iter != users.end())
     {
-    if (iter->GetLogin() != login && iter->GetProperty().ips.Get().IsIPInIPS(ip))
+    if (iter->GetLogin() != login &&
+        !iter->GetProperty().ips.Get().IsAnyIP() &&
+        iter->GetProperty().ips.Get().IsIPInIPS(ip))
         {
         if (user != NULL)
             *user = &(*iter);