}
/* BADCHANed channel */
- if ((gline = gline_find(name, GLINE_BADCHAN | GLINE_EXACT)) &&
+ if ((gline = gline_find(name, GLINE_BADCHAN)) &&
GlineIsActive(gline) && !IsAnOper(sptr)) {
- send_reply(sptr, ERR_BANNEDFROMCHAN, name);
+ send_reply(sptr, ERR_BADCHANNAME, name, gline->gl_reason);
continue;
}
else if (*chptr->mode.key && (!key || strcmp(key, chptr->mode.key)))
err = ERR_BADCHANNELKEY;
+ /*
+ * ASUKA_X:
+ * Allow XtraOpers to join all channels.
+ * --Bigfoot
+ */
+ if (IsXtraOp(sptr))
+ err = 0;
+
/* An oper with WALK_LCHAN privilege can join a local channel
* he otherwise could not join by using "OVERRIDE" as the key.
* This will generate a HACK(4) notice, but fails if the oper