+}
+
+static void
+ms_mlock(struct MsgBuf *msgbuf_p, struct Client *client_p, struct Client *source_p, int parc, const char *parv[])
+{
+ struct Channel *chptr = NULL;
+
+ /* Now, try to find the channel in question */
+ if(!IsChanPrefix(parv[2][0]) || !check_channel_name(parv[2]))
+ {
+ sendto_one_numeric(source_p, ERR_BADCHANNAME, form_str(ERR_BADCHANNAME), parv[2]);
+ return;
+ }
+
+ chptr = find_channel(parv[2]);
+
+ if(chptr == NULL)
+ {
+ sendto_one_numeric(source_p, ERR_NOSUCHCHANNEL,
+ form_str(ERR_NOSUCHCHANNEL), parv[2]);
+ return;
+ }
+
+ /* TS is higher, drop it. */
+ if(atol(parv[1]) > chptr->channelts)
+ return;
+
+ if(IsServer(source_p))
+ set_channel_mlock(client_p, source_p, chptr, parv[3], true);
+}
+
+static void
+possibly_remove_lower_forward(struct Client *fakesource_p, int mems,
+ struct Channel *chptr, rb_dlink_list *banlist, int mchar,
+ const char *mask, const char *forward)
+{
+ struct Ban *actualBan;
+ rb_dlink_node *ptr;