From c554add299fb870b44957e3c7f7a8e743abceb1c 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 --- modules/core/m_mode.c | 2 +- src/chmode.c | 7 ++++--- src/s_serv.c | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/core/m_mode.c b/modules/core/m_mode.c index 5549203..e00eff2 100644 --- a/modules/core/m_mode.c +++ b/modules/core/m_mode.c @@ -59,7 +59,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 042fbea..a676d0a 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -2246,8 +2246,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 65e8e0f..5f272b0 100644 --- a/src/s_serv.c +++ b/src/s_serv.c @@ -679,9 +679,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);