]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
After changing the codepage rename duplicate users to their UUID.
authorSadie Powell <sadie@witchery.services>
Tue, 22 Dec 2020 04:10:07 +0000 (04:10 +0000)
committerSadie Powell <sadie@witchery.services>
Tue, 22 Dec 2020 04:13:56 +0000 (04:13 +0000)
src/modules/m_codepage.cpp

index 4054c72c1edd7949b9ed1eb847c60332ba480ae1..45fdb3d834ae02e2b312c2c5b68403cdba7a3dbd 100644 (file)
@@ -76,6 +76,21 @@ class ModuleCodepage
                hashmap.swap(newhash);
        }
 
+       void CheckDuplicateNick()
+       {
+               insp::flat_set<std::string, irc::insensitive_swo> duplicates;
+               const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers();
+               for (UserManager::LocalList::const_iterator iter = list.begin(); iter != list.end(); ++iter)
+               {
+                       LocalUser* user = *iter;
+                       if (user->nick != user->uuid && !duplicates.insert(user->nick).second)
+                       {
+                               user->WriteNumeric(RPL_SAVENICK, user->uuid, "Your nickname is no longer available.");
+                               user->ChangeNick(user->uuid);
+                       }
+               }
+       }
+
        void CheckInvalidNick()
        {
                const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers();
@@ -115,6 +130,7 @@ class ModuleCodepage
 
                ServerInstance->Config->CaseMapping = origcasemapname;
                national_case_insensitive_map = origcasemap;
+               CheckDuplicateNick();
                CheckRehash(casemap);
 
                ServerInstance->ISupport.Build();