From 6b8db2daf2e0307105a3dfab9bb5e0949b4bd5f9 Mon Sep 17 00:00:00 2001 From: Stephen Bennett Date: Sun, 2 May 2010 20:42:46 +0100 Subject: [PATCH] Allow the final parameter of MLOCK to be empty, to remove an existing mlock --- include/channel.h | 1 - modules/core/m_mode.c | 2 +- src/chmode.c | 7 ++++--- src/s_serv.c | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/include/channel.h b/include/channel.h index b7a80f4f..01b7275c 100644 --- a/include/channel.h +++ b/include/channel.h @@ -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); #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); diff --git a/modules/core/m_mode.c b/modules/core/m_mode.c index 4be9ab12..ac020801 100644 --- a/modules/core/m_mode.c +++ b/modules/core/m_mode.c @@ -58,7 +58,7 @@ struct Message tmode_msgtab = { }; 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, diff --git a/src/chmode.c b/src/chmode.c index b345b8e1..38393b2a 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -1774,8 +1774,9 @@ set_channel_mlock(struct Client *client_p, struct Client *source_p, 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 : ""); } diff --git a/src/s_serv.c b/src/s_serv.c index 684e3a16..3b4778b6 100644 --- a/src/s_serv.c +++ b/src/s_serv.c @@ -659,9 +659,9 @@ burst_TS6(struct Client *client_p) 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);