X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/97532cfafb24c47e7a8ae0b489fbbf0e9cbceb0b..b2c208be091670e3c5259eba77187bae6ac6eece:/modules/core/m_join.c diff --git a/modules/core/m_join.c b/modules/core/m_join.c index 7b8193a7..bba9eaf1 100644 --- a/modules/core/m_join.c +++ b/modules/core/m_join.c @@ -41,6 +41,7 @@ #include "modules.h" #include "packet.h" #include "chmode.h" +#include "ratelimit.h" static int m_join(struct Client *, struct Client *, int, const char **); static int ms_join(struct Client *, struct Client *, int, const char **); @@ -255,8 +256,10 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p if(moduledata.approved != 0) { +#ifdef XXX_NOTYET sendto_one(source_p, form_str(moduledata.approved), me.name, source_p->name, name); +#endif continue; } @@ -301,9 +304,10 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p * see extensions/chm_operonly.c for other comments on this * -- dwr */ +#ifdef XXX_NOTYET if(i != ERR_CUSTOM) sendto_one(source_p, form_str(i), me.name, source_p->name, name); - +#endif continue; } else if(chptr != chptr2) @@ -325,6 +329,9 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p } chptr->join_count++; + /* credit user for join */ + credit_client_join(source_p); + /* we send the user their join here, because we could have to * send a mode out next. */ @@ -394,7 +401,6 @@ ms_join(struct Client *client_p, struct Client *source_p, int parc, const char * time_t newts; int isnew; int keep_our_modes = YES; - int keep_new_modes = YES; rb_dlink_node *ptr, *next_ptr; /* special case for join 0 */ @@ -456,8 +462,6 @@ ms_join(struct Client *client_p, struct Client *source_p, int parc, const char * keep_our_modes = NO; chptr->channelts = newts; } - else - keep_new_modes = NO; /* Lost the TS, other side wins, so remove modes on this side */ if(!keep_our_modes) @@ -1268,7 +1272,8 @@ remove_ban_list(struct Channel *chptr, struct Client *source_p, banptr = ptr->data; /* trailing space, and the mode letter itself */ - plen = strlen(banptr->banstr) + 2; + plen = strlen(banptr->banstr) + + (banptr->forward ? strlen(banptr->forward) + 1 : 0) + 2; if(count >= MAXMODEPARAMS || (cur_len + plen) > BUFSIZE - 4) { @@ -1286,7 +1291,10 @@ remove_ban_list(struct Channel *chptr, struct Client *source_p, *mbuf++ = c; cur_len += plen; - pbuf += rb_sprintf(pbuf, "%s ", banptr->banstr); + if (banptr->forward) + pbuf += rb_sprintf(pbuf, "%s$%s ", banptr->banstr, banptr->forward); + else + pbuf += rb_sprintf(pbuf, "%s ", banptr->banstr); count++; free_ban(banptr);