Allow the final parameter of MLOCK to be empty, to remove an existing mlock

This commit is contained in:
Stephen Bennett 2010-05-02 20:42:46 +01:00
parent 1916ed52f8
commit 6b8db2daf2
4 changed files with 7 additions and 7 deletions

View file

@ -241,7 +241,6 @@ extern void del_invite(struct Channel *chptr, struct Client *who);
const char *channel_modes_real(struct Channel *chptr, struct Mode *mode, struct Client *who); 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_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); extern struct Channel *find_bannickchange_channel(struct Client *client_p);

View file

@ -58,7 +58,7 @@ struct Message tmode_msgtab = {
}; };
struct Message mlock_msgtab = { struct Message mlock_msgtab = {
"MLOCK", 0, 0, 0, MFLG_SLOW, "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 = { struct Message bmask_msgtab = {
"BMASK", 0, 0, 0, MFLG_SLOW, "BMASK", 0, 0, 0, MFLG_SLOW,

View file

@ -1774,8 +1774,9 @@ set_channel_mlock(struct Client *client_p, struct Client *source_p,
struct Channel *chptr, const char *newmlock) struct Channel *chptr, const char *newmlock)
{ {
rb_free(chptr->mode_lock); 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", 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); source_p->id, (long) chptr->channelts, chptr->chname,
chptr->mode_lock ? chptr->mode_lock : "");
} }

View file

@ -659,9 +659,9 @@ burst_TS6(struct Client *client_p)
chptr->topic); chptr->topic);
if(IsCapable(client_p, CAP_MLOCK)) 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, me.id, (long) chptr->channelts, chptr->chname,
channel_mlock(chptr, client_p)); EmptyString(chptr->mode_lock) ? "" : chptr->mode_lock);
hchaninfo.chptr = chptr; hchaninfo.chptr = chptr;
call_hook(h_burst_channel, &hchaninfo); call_hook(h_burst_channel, &hchaninfo);