]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
possible fix for bug #623, reported by MacGyver. Untested please test :D
authorpeavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 16 Oct 2008 22:53:14 +0000 (22:53 +0000)
committerpeavey <peavey@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 16 Oct 2008 22:53:14 +0000 (22:53 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10651 e03df62e-2008-0410-955e-edbf42e46eb7

src/usermanager.cpp

index 1cb269bdf45909b475ab255fde892cc2e0e68bc8..e526238eddb6688bd9125fb8a0682cebe91c2f88 100644 (file)
@@ -282,7 +282,23 @@ void UserManager::RemoveCloneCounts(User *user)
 
 unsigned long UserManager::GlobalCloneCount(User *user)
 {
-       clonemap::iterator x = global_clones.find(user->GetIPString());
+       int range = 32;
+       switch (user->GetProtocolFamily())
+       {
+#ifdef SUPPORT_IP6LINKS
+               case AF_INET6:
+               {
+                       range = ServerInstance->Config->c_ipv6_range;
+               }
+               break;
+#endif
+               case AF_INET:
+               {
+                       range = ServerInstance->Config->c_ipv4_range;
+               }
+               break;
+       }
+       clonemap::iterator x = global_clones.find(user->GetCIDRMask(range));
        if (x != global_clones.end())
                return x->second;
        else
@@ -291,7 +307,23 @@ unsigned long UserManager::GlobalCloneCount(User *user)
 
 unsigned long UserManager::LocalCloneCount(User *user)
 {
-       clonemap::iterator x = local_clones.find(user->GetIPString());
+       int range = 32;
+       switch (user->GetProtocolFamily())
+       {
+#ifdef SUPPORT_IP6LINKS
+               case AF_INET6:
+               {
+                       range = ServerInstance->Config->c_ipv6_range;
+               }
+               break;
+#endif
+               case AF_INET:
+               {
+                       range = ServerInstance->Config->c_ipv4_range;
+               }
+               break;
+       }
+       clonemap::iterator x = local_clones.find(user->GetCIDRMask(range));
        if (x != local_clones.end())
                return x->second;
        else