const char *channel_modes_real(struct Channel *chptr, struct Mode *mode, struct Client *who);
#define channel_modes(chptr, who) channel_modes_real(chptr, &(chptr)->mode, who)
-#define channel_mlock(chptr, who) channel_modes_real(chptr, &(chptr)->mode_lock, who)
extern struct Channel *find_bannickchange_channel(struct Client *client_p);
};
struct Message mlock_msgtab = {
"MLOCK", 0, 0, 0, MFLG_SLOW,
- {mg_ignore, mg_ignore, {ms_mlock, 4}, {ms_mlock, 4}, mg_ignore, mg_ignore}
+ {mg_ignore, mg_ignore, {ms_mlock, 3}, {ms_mlock, 3}, mg_ignore, mg_ignore}
};
struct Message bmask_msgtab = {
"BMASK", 0, 0, 0, MFLG_SLOW,
struct Channel *chptr, const char *newmlock)
{
rb_free(chptr->mode_lock);
- chptr->mode_lock = rb_strdup(newmlock);
+ 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);
+ 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 : "");
}
chptr->topic);
if(IsCapable(client_p, CAP_MLOCK))
- sendto_one(client_p, ":%s MLOCK %ld %s %s",
+ sendto_one(client_p, ":%s MLOCK %ld %s :%s",
me.id, (long) chptr->channelts, chptr->chname,
- channel_mlock(chptr, client_p));
+ EmptyString(chptr->mode_lock) ? "" : chptr->mode_lock);
hchaninfo.chptr = chptr;
call_hook(h_burst_channel, &hchaninfo);