remove manager entry from slfh's when a user gets added to the tlfh manager list
authorpk910 <philipp@zoelle1.de>
Mon, 7 Jan 2013 20:41:10 +0000 (21:41 +0100)
committerpk910 <philipp@zoelle1.de>
Mon, 7 Jan 2013 20:41:10 +0000 (21:41 +0100)
src/mod-hostserv.c

index 55ac89e928e5cd7bd957a4c42ea5c2b7236cabb0..db4feb53f3dd01b545aacbcf80f240a78633f73e 100644 (file)
@@ -967,8 +967,20 @@ static MODCMD_FUNC(cmd_addmanager) {
     }
     if(fhinfo.slfh)
         hs_add_manager_secondlevel(fhinfo.slfh, huser);
-    else
+    else {
         hs_add_manager_toplevel(fhinfo.tlfh, huser);
+        //remove from all slfh's
+        struct hs_manager *next_manager;
+        struct hs_secondlevel *slfh;
+        for(manager = huser->managements; manager; manager = next_manager) {
+            next_manager = manager->next;
+            if(manager->type == 2) {
+                slfh = manager->object;
+                if(slfh->toplevel == fhinfo.tlfh)
+                    hs_del_manager(manager, 1);
+            }
+        }
+    }
     reply("HSMSG_MANAGER_ADDED", hi->handle, fhinfo.slfh_name, fhinfo.tlfh_name);
     return 1;
 }