]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/core/m_kick.c
Fix some valgrind warnings.
[irc/rqf/shadowircd.git] / modules / core / m_kick.c
index 12bf5de868d7187aa0083f2967353437b257d64d..3029ca6f0de72b315e50a3d84ccb37310f062f12 100644 (file)
@@ -68,6 +68,7 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
        char *comment;
        const char *name;
        char *p = NULL;
+       char text[10];
        const char *user;
        static char buf[BUFSIZE];
        int is_override = 0;
@@ -114,7 +115,7 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
                                        is_override = 1;
                                else
                                {
-                                       sendto_one(source_p, form_str(ERR_CHANOPRIVSNEEDED),
+                                       sendto_one(source_p, ":%s 482 %s %s :You do not have the proper privledges to kick this user",
                                                        me.name, source_p->name, name);
                                        return 0;
                                }
@@ -204,9 +205,14 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
                        comment[REASONLEN] = '\0';
 
                if(is_override)
-                       sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
+               {
+                       sendto_wallops_flags(UMODE_WALLOP, &me,
                                        "%s is overriding KICK [%s] on [%s] [%s]",
                                        get_oper_name(source_p), who->name, chptr->chname, comment);
+                       sendto_server(NULL, chptr, NOCAPS, NOCAPS,
+                                       ":%s WALLOPS :%s is overriding KICK [%s] on [%s] [%s]",
+                                       me.name, get_oper_name(source_p), who->name, chptr->chname, comment);
+               }
 
                /* jdc
                 * - In the case of a server kicking a user (i.e. CLEARCHAN),
@@ -228,6 +234,12 @@ m_kick(struct Client *client_p, struct Client *source_p, int parc, const char *p
                              ":%s KICK %s %s :%s",
                              use_id(source_p), chptr->chname, use_id(who), comment);
                remove_user_from_channel(msptr);
+
+               rb_snprintf(text, sizeof(text), "K%s", who->id);
+
+               /* we don't need to track NOREJOIN stuff unless it's our client being kicked */
+               if(MyClient(who) && chptr->mode.mode & MODE_NOREJOIN)
+                       channel_metadata_time_add(chptr, text, rb_current_time(), "KICKNOREJOIN");
        }
        else if (MyClient(source_p))
                sendto_one_numeric(source_p, ERR_USERNOTINCHANNEL,