added "nowho" parameter to debug userlist and fixed memory leak in DBHelper.c
[NeonServV5.git] / src / cmd_neonserv_mode.c
index a4a64f6a0b187423a876a16a5ab16156a4a35857..8a11e36ea1d3612cd2a9515c889b904bdb62f5f8 100644 (file)
@@ -1,5 +1,5 @@
-/* cmd_neonserv_mode.c - NeonServ v5.0
- * Copyright (C) 2011  Philipp Kreil (pk910)
+/* cmd_neonserv_mode.c - NeonServ v5.3
+ * Copyright (C) 2011-2012  Philipp Kreil (pk910)
  * 
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -76,7 +76,7 @@ static void neonserv_cmd_mode_async1(struct ClientSocket *client, struct ClientS
         parseModeString(modelock, row[4]);
     else if(defaults[4])
         parseModeString(modelock, defaults[4]);
-    int uaccess = getChannelAccess(user, chan, 0);
+    int uaccess = getChannelAccess(user, chan);
     char *a, *b = mode;
     char *argv[MAXNUMPARAMS];
     char *carg;
@@ -248,6 +248,12 @@ static void neonserv_cmd_mode_async1(struct ClientSocket *client, struct ClientS
                                 }
                             }
                         }
+                    } else if(!add && (modetype & CHANNEL_MODE_TYPE) == CHANNEL_MODE_TYPE_B) {
+                        if(arg == argc && !(modetype & CHANNEL_MODE_KEY)) {
+                            reply(textclient, user, "NS_MODE_INVALID", modeStr[i]);
+                            return;
+                        }
+                        carg = (arg == argc ? NULL : argv[arg++]);
                     } else
                         carg = NULL;
                     if((modetype & CHANNEL_MODE_TYPE) == CHANNEL_MODE_TYPE_D && isModeSet(chan->modes, modeStr[i]) == add)