X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/133755685ef38d8f9ac79ac27c4505b9e96f81fd..82c11fc45cb57fc31f3dbfd97bd578865a0683ce:/modules/core/m_join.c diff --git a/modules/core/m_join.c b/modules/core/m_join.c index 73c497e..67360be 100644 --- a/modules/core/m_join.c +++ b/modules/core/m_join.c @@ -46,6 +46,8 @@ 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}} @@ -111,6 +113,9 @@ me_svsjoin(struct Client *client_p, struct Client *source_p, int parc, const cha if((target_p = find_person(parv[1])) == NULL) return 0; + if(!MyClient(target_p)) + return 0; + user_join(&me, target_p, parv[2], NULL); return 0; } @@ -530,7 +535,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char { fl = 0; - for (i = 0; i < 2; i++) + for (i = 0; i < 4; i++) { if(*s == '!') { @@ -690,7 +695,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char para[pargs++] = target_p->name; } } - if(fl & CHFL_CHANOP) + else if(fl & CHFL_CHANOP) { *mbuf++ = 'o'; para[pargs++] = target_p->name; @@ -740,7 +745,7 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char para[pargs++] = target_p->name; } } - if(fl & CHFL_HALFOP) + else if(fl & CHFL_HALFOP) { *mbuf++ = 'h'; para[pargs++] = target_p->name; @@ -819,7 +824,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 & MODE_PERMANENT) && isnew) + if(!joins && !(chptr->mode.mode & ModuleModes.MODE_PERMANENT) && isnew) { destroy_channel(chptr); @@ -970,7 +975,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) && ConfigChannel.use_forward) + if(mode->forward[0] && strcmp(oldmode->forward, mode->forward) && ModuleModes.MODE_FORWARD) { if(dir != MODE_ADD) {