]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - src/chmode.c
Enforce TS rules on MLOCKs.
[irc/rqf/shadowircd.git] / src / chmode.c
index a99b586a3f95ee925161d67523d468c6abd26907..14aebcce4cdb260a62fc3cb3f6de4bccf8d9b774 100644 (file)
@@ -2087,7 +2087,7 @@ set_channel_mode(struct Client *client_p, struct Client *source_p,
                        /* If this mode char is locked, don't allow local users to change it. */
                        if (MyClient(source_p) && chptr->mode_lock && strchr(chptr->mode_lock, c))
                        {
-                               sendto_one_numeric(source_p, ERR_MLOCKRESTRICTED, form_str(ERR_MLOCKRESTRICTED), chptr->name, c, chptr->mode_lock);
+                               sendto_one_numeric(source_p, ERR_MLOCKRESTRICTED, form_str(ERR_MLOCKRESTRICTED), chptr->chname, c, chptr->mode_lock);
                                continue;
                        }
                        chmode_table[(unsigned char) c].set_func(fakesource_p, chptr, alevel,
@@ -2246,12 +2246,15 @@ set_channel_mode(struct Client *client_p, struct Client *source_p,
  */
 void
 set_channel_mlock(struct Client *client_p, struct Client *source_p,
-                 struct Channel *chptr, const char *newmlock)
+                 struct Channel *chptr, const char *newmlock, int propagate)
 {
        rb_free(chptr->mode_lock);
        chptr->mode_lock = newmlock ? rb_strdup(newmlock) : NULL;
 
-       sendto_server(client_p, NULL, CAP_TS6 | CAP_MLOCK, NOCAPS, ":%s MLOCK %ld %s :%s",
-                     source_p->id, (long) chptr->channelts, chptr->chname,
-                     chptr->mode_lock ? chptr->mode_lock : "");
+       if (propagate)
+       {
+               sendto_server(client_p, NULL, CAP_TS6 | CAP_MLOCK, NOCAPS, ":%s MLOCK %ld %s :%s",
+                             source_p->id, (long) chptr->channelts, chptr->chname,
+                             chptr->mode_lock ? chptr->mode_lock : "");
+       }
 }