diff options
-rw-r--r-- | src/usermanager.cpp | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/usermanager.cpp b/src/usermanager.cpp index 1cb269bdf..e526238ed 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -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 |