fixed some compiler warnings and prevent duplicate assignments
authorpk910 <philipp@zoelle1.de>
Fri, 4 Jan 2013 20:11:23 +0000 (21:11 +0100)
committerpk910 <philipp@zoelle1.de>
Fri, 4 Jan 2013 20:11:23 +0000 (21:11 +0100)
src/mod-hostserv.c

index fbba68cb27893f073f10ab5f17c20b3a4cebfe61..56ef7454225b69f830a7e323f8e5177b01c75ab8 100644 (file)
@@ -81,6 +81,7 @@ static const struct message_entry msgtab[] = {
     { "HSMSG_MANAGER_NOT", "$b%s$b is not a manager of %s.%s" },
     { "HSMSG_MANAGER_DELETED", "$b%s$b is no longer a manager of %s.%s" },
     { "HSMSG_FAKEHOST_ASSIGN_SUCCESS", "Group $b%s.%s$b was assigned successfully." },
+    { "HSMSG_FAKEHOST_ASSIGNED", "Group $b%s.%s$b is already assigned to the user." },
     { "HSMSG_FAKEHOST_UNASSIGN_SUCCESS", "Group $b%s.%s$b was unassigned successfully." },
     
     { NULL, NULL }
@@ -706,7 +707,7 @@ static MODCMD_FUNC(cmd_addhost) {
     if(!irccasecmp(slfh_name, "*")) {
         if(!check_management_access(hi, NULL, NULL)) {
             reply("HSMSG_ACCESS_DENIED");
-            return NULL;
+            return 0;
         }
         for(tlfh = toplevels; tlfh; tlfh = tlfh->next) {
             if(!irccasecmp(tlfh->fakehost, tlfh_name)) break;
@@ -950,7 +951,6 @@ static MODCMD_FUNC(cmd_set) {
     struct handle_info *hi;
     struct hs_user *hs_user;
     struct hs_assignment *assignment;
-    struct hs_assignment *assgn;
     struct hs_toplevel *tlfh;
     struct hs_secondlevel *slfh;
     char *fakehost;
@@ -1034,6 +1034,10 @@ static MODCMD_FUNC(cmd_assign) {
                         reply("HSMSG_ACCESS_DENIED");
                         return 0;
                     }
+                    if(hs_get_assignment(slfh, hs_user)) {
+                        reply("HSMSG_FAKEHOST_ASSIGNED", slfh_name, tlfh_name);
+                        return 0;
+                    }
                     hs_add_assignment(slfh, hs_user);
                     reply("HSMSG_FAKEHOST_ASSIGN_SUCCESS", slfh_name, tlfh_name);
                     return 1;