Avoid appending a user to curr_opers or curr_helpers more than once.
[srvx.git] / src / proto-p10.c
index 8a5a76de57033f3545c60032dc1fc71ffa588a8c..a0da122e2b5f9a49b0cb56956e261c35eea27298 100644 (file)
@@ -2213,11 +2213,11 @@ void mod_usermode(struct userNode *user, const char *mode_change) {
         case '-': add = 0; break;
         case 'o':
             do_user_mode(FLAGS_OPER);
-            if (add) {
+            if (!add) {
+                userList_remove(&curr_opers, user);
+            } else if (!userList_contains(&curr_opers, user)) {
                 userList_append(&curr_opers, user);
                 call_oper_funcs(user);
-            } else {
-                userList_remove(&curr_opers, user);
             }
             break;
         case 'i': do_user_mode(FLAGS_INVISIBLE);