]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Stop removing oper modes after a user have been quit network-wide.
authorPeter Powell <petpow@saberuk.com>
Wed, 31 Jul 2019 20:25:44 +0000 (21:25 +0100)
committerPeter Powell <petpow@saberuk.com>
Wed, 31 Jul 2019 20:46:07 +0000 (21:46 +0100)
Fixes #1686.

src/users.cpp

index 37e3814855b3555d71303bcd3d5463da48ea5c62..cfdd1f0b5c397c0ede7bedd88e421936b6e71868 100644 (file)
@@ -441,6 +441,13 @@ void User::UnOper()
         */
        oper = NULL;
 
+       // Remove the user from the oper list
+       stdalgo::vector::swaperase(ServerInstance->Users->all_opers, this);
+
+       // If the user is quitting we shouldn't remove any modes as it results in
+       // mode messages being broadcast across the network.
+       if (quitting)
+               return;
 
        /* Remove all oper only modes from the user when the deoper - Bug #466*/
        Modes::ChangeList changelist;
@@ -454,9 +461,6 @@ void User::UnOper()
 
        ServerInstance->Modes->Process(this, NULL, this, changelist);
 
-       // Remove the user from the oper list
-       stdalgo::vector::swaperase(ServerInstance->Users->all_opers, this);
-
        ModeHandler* opermh = ServerInstance->Modes->FindMode('o', MODETYPE_USER);
        if (opermh)
                this->SetMode(opermh, false);