]> jfr.im git - solanum.git/blobdiff - extensions/extb_canjoin.c
explicitly show IP in SNO_BANNED snotes
[solanum.git] / extensions / extb_canjoin.c
index bfb02bc45d7098a742b0dea849342229e1f6ae24..f333772d948a029f1b5e883de4e045a6361c2d1f 100644 (file)
 #include "hash.h"
 #include "ircd.h"
 
+static const char extb_desc[] = "Can join ($j) extban type - matches users who are or are not banned from a specified channel";
+
 static int _modinit(void);
 static void _moddeinit(void);
 static int eb_canjoin(const char *data, struct Client *client_p, struct Channel *chptr, long mode_type);
-static const char extb_desc[] = "Can join ($j) extban type - matches users who are or are not banned from a specified channel";
 
 DECLARE_MODULE_AV2(extb_canjoin, _modinit, _moddeinit, NULL, NULL, NULL, NULL, NULL, extb_desc);
 
@@ -45,6 +46,8 @@ static int eb_canjoin(const char *data, struct Client *client_p,
                return EXTBAN_INVALID;
        if (data == NULL)
                return EXTBAN_INVALID;
+       if (mode_type == CHFL_EXCEPTION)
+               return EXTBAN_INVALID;
        chptr2 = find_channel(data);
        /* must exist, and no point doing this with the same channel */
        if (chptr2 == NULL || chptr2 == chptr)
@@ -60,7 +63,7 @@ static int eb_canjoin(const char *data, struct Client *client_p,
                return EXTBAN_INVALID;
 #endif
        recurse = 1;
-       ret = is_banned(chptr2, client_p, NULL, NULL, NULL, NULL) == CHFL_BAN ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+       ret = is_banned(chptr2, client_p, NULL, NULL, NULL) != 0 ? EXTBAN_MATCH : EXTBAN_NOMATCH;
        recurse = 0;
        return ret;
 }