X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/212380e3f42f585dc1ea927402252eb943f91f7b..c98390004f4f14cd8215302d77313f81e2546e22:/src/chmode.c diff --git a/src/chmode.c b/src/chmode.c index 1d8f711..3f42a6f 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -22,7 +22,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA * - * $Id: chmode.c 3131 2007-01-21 15:36:31Z jilles $ + * $Id: chmode.c 3580 2007-11-07 23:45:14Z jilles $ */ #include "stdinc.h" @@ -92,7 +92,7 @@ add_id(struct Client *source_p, struct Channel *chptr, const char *banid, dlink_list * list, long mode_type) { struct Ban *actualBan; - static char who[BANLEN]; + static char who[USERHOST_REPLYLEN]; char *realban = LOCAL_COPY(banid); dlink_node *ptr; @@ -108,12 +108,10 @@ add_id(struct Client *source_p, struct Channel *chptr, const char *banid, return 0; } - collapse(realban); - DLINK_FOREACH(ptr, list->head) { actualBan = ptr->data; - if(match(actualBan->banstr, realban)) + if(mask_match(actualBan->banstr, realban)) return 0; } } @@ -581,7 +579,10 @@ chm_ban(struct Client *source_p, struct Channel *chptr, me.name, source_p->name, chptr->chname, banptr->banstr, banptr->who, banptr->when); } - sendto_one(source_p, form_str(rpl_endlist), me.name, source_p->name, chptr->chname); + if (mode_type == CHFL_QUIET) + sendto_one(source_p, ":%s %d %s %s :End of Channel Quiet List", me.name, rpl_endlist, source_p->name, chptr->chname); + else + sendto_one(source_p, form_str(rpl_endlist), me.name, source_p->name, chptr->chname); return; } @@ -614,8 +615,11 @@ chm_ban(struct Client *source_p, struct Channel *chptr, else mask = pretty_mask(raw_mask); - /* we'd have problems parsing this, hyb6 does it too */ - if(strlen(mask) > (MODEBUFLEN - 2)) + /* we'd have problems parsing this, hyb6 does it too + * also make sure it will always fit on a line with channel + * name etc. + */ + if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5)) return; /* if we're adding a NEW id */ @@ -964,9 +968,9 @@ chm_forward(struct Client *source_p, struct Channel *chptr, if (!(*errors & SM_ERR_RPL_F)) { if (*chptr->mode.forward == '\0') - sendto_one(source_p, ":%s NOTICE %s :%s has no forward channel", me.name, source_p->name, chptr->chname); + sendto_one_notice(source_p, ":%s has no forward channel", chptr->chname); else - sendto_one(source_p, ":%s NOTICE %s :%s forward channel is %s", me.name, source_p->name, chptr->chname, chptr->mode.forward); + sendto_one_notice(source_p, ":%s forward channel is %s", chptr->chname, chptr->mode.forward); *errors |= SM_ERR_RPL_F; } return;