X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/e61031601953089a7654ca4e098b899d77653b47..3cc95ad81898b2aa152f074adb3b41ec7cbd7c42:/modules/core/m_join.c diff --git a/modules/core/m_join.c b/modules/core/m_join.c index 94b1329..61fdf18 100644 --- a/modules/core/m_join.c +++ b/modules/core/m_join.c @@ -46,8 +46,6 @@ static int me_svsjoin(struct Client *, struct Client *, int, const char **); static int ms_join(struct Client *, struct Client *, int, const char **); static int ms_sjoin(struct Client *, struct Client *, int, const char **); -struct module_modes ModuleModes; - struct Message join_msgtab = { "JOIN", 0, 0, 0, MFLG_SLOW, {mg_unreg, {m_join, 2}, {ms_join, 2}, mg_ignore, mg_ignore, {m_join, 2}} @@ -396,12 +394,15 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char { /* If configured, kick people trying to join +i/+k * channels by recreating them on split servers. - * Don't kick if the source has sent EOB (services - * deopping everyone by TS-1 SJOIN). + * If the source has sent EOB, assume this is some + * sort of hack by services. If cmode +i is set, + * services can send kicks if needed; if the key + * differs, services cannot kick in a race-free + * manner so do so here. * -- jilles */ if (ConfigChannel.kick_on_split_riding && - !HasSentEob(source_p) && - ((mode.mode & MODE_INVITEONLY) || + ((!HasSentEob(source_p) && + mode.mode & MODE_INVITEONLY) || (mode.key[0] != 0 && irccmp(mode.key, oldmode->key) != 0))) { struct membership *msptr; @@ -830,7 +831,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char CheckEmpty(para[2]), CheckEmpty(para[3])); } - if(!joins && !(chptr->mode.mode & ModuleModes.MODE_PERMANENT) && isnew) + if(!joins && !(chptr->mode.mode & MODE_PERMANENT) && isnew) { destroy_channel(chptr); @@ -981,7 +982,7 @@ set_final_mode(struct Mode *mode, struct Mode *oldmode) len = rb_sprintf(pbuf, "%d:%d ", mode->join_num, mode->join_time); pbuf += len; } - if(mode->forward[0] && strcmp(oldmode->forward, mode->forward) && ModuleModes.MODE_FORWARD) + if(mode->forward[0] && strcmp(oldmode->forward, mode->forward) && ConfigChannel.use_forward) { if(dir != MODE_ADD) {