]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/core/m_join.c
Add chmode +D, which blocks CTCP ACTION.
[irc/rqf/shadowircd.git] / modules / core / m_join.c
index f8598d7d10898429c9ef4f4fa98f32b53d7fdf35..c01aba7791bc42182a780852464e906cd461ab21 100644 (file)
@@ -141,7 +141,6 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p
        char *p = NULL, *p2 = NULL;
        char *chanlist;
        char *mykey;
-       int successful_join_count = 0;  /* Number of channels successfully joined */
 
        jbuf[0] = '\0';
 
@@ -272,14 +271,9 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p
                {
                        sendto_one(source_p, form_str(ERR_TOOMANYCHANNELS),
                                   me.name, source_p->name, name);
-                       if(successful_join_count)
-                               source_p->localClient->last_join_time = rb_current_time();
                        return 0;
                }
 
-               if(flags == 0)  /* if channel doesn't exist, don't penalize */
-                       successful_join_count++;
-
                if(chptr == NULL)       /* If I already have a chptr, no point doing this */
                {
                        chptr = get_or_create_channel(source_p, name, NULL);
@@ -288,15 +282,10 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p
                        {
                                sendto_one(source_p, form_str(ERR_UNAVAILRESOURCE),
                                           me.name, source_p->name, name);
-                               if(successful_join_count > 0)
-                                       successful_join_count--;
                                continue;
                        }
                }
 
-               if(!IsOper(source_p) && !IsExemptSpambot(source_p))
-                       check_spambot_warning(source_p, name);
-
                /* can_join checks for +i key, bans etc */
                if((i = can_join(source_p, chptr, key)))
                {
@@ -310,14 +299,16 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p
                                if(i != ERR_CUSTOM)
                                        sendto_one(source_p, form_str(i), me.name, source_p->name, name);
 
-                               if(successful_join_count > 0)
-                                       successful_join_count--;
                                continue;
                        }
 
                        sendto_one_numeric(source_p, ERR_LINKCHANNEL, form_str(ERR_LINKCHANNEL), name, chptr->chname);
                }
 
+               if(flags == 0 &&
+                               !IsOper(source_p) && !IsExemptSpambot(source_p))
+                       check_spambot_warning(source_p, name);
+
                /* add the user to the channel */
                add_user_to_channel(chptr, source_p, flags);
                if (chptr->mode.join_num &&
@@ -373,9 +364,6 @@ m_join(struct Client *client_p, struct Client *source_p, int parc, const char *p
 
                channel_member_names(chptr, source_p, 1);
 
-               if(successful_join_count)
-                       source_p->localClient->last_join_time = rb_current_time();
-
                hook_info.client = source_p;
                hook_info.chptr = chptr;
                hook_info.key = key;
@@ -956,8 +944,6 @@ ms_sjoin(struct Client *client_p, struct Client *source_p, int parc, const char
  * output      - NONE
  * side effects        - Use has decided to join 0. This is legacy
  *               from the days when channels were numbers not names. *sigh*
- *               There is a bunch of evilness necessary here due to
- *               anti spambot code.
  */
 static void
 do_join_0(struct Client *client_p, struct Client *source_p)
@@ -972,12 +958,12 @@ do_join_0(struct Client *client_p, struct Client *source_p)
 
        sendto_server(client_p, NULL, CAP_TS6, NOCAPS, ":%s JOIN 0", use_id(source_p));
 
-       if(source_p->user->channel.head && MyConnect(source_p) &&
-          !IsOper(source_p) && !IsExemptSpambot(source_p))
-               check_spambot_warning(source_p, NULL);
-
        while((ptr = source_p->user->channel.head))
        {
+               if(MyConnect(source_p) &&
+                  !IsOper(source_p) && !IsExemptSpambot(source_p))
+                       check_spambot_warning(source_p, NULL);
+
                msptr = ptr->data;
                chptr = msptr->chptr;
                sendto_channel_local(ALL_MEMBERS, chptr, ":%s!%s@%s PART %s",