]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/core/m_join.c
Automated merge with ssh://taros@hg.atheme.org//hg/unofficial/shadowircd
[irc/rqf/shadowircd.git] / modules / core / m_join.c
index 81a62811d1680d0b8734f012cf350a24b152f817..67360befe0d70f87e94143a0cb93d42ae62ba61f 100644 (file)
@@ -113,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;
 }
@@ -532,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 == '!')
                        {
@@ -692,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;
@@ -742,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;