From 3da167f2074d2d8a44dd672ac11171e4c3a4ec21 Mon Sep 17 00:00:00 2001 From: JD Horelick Date: Thu, 4 Mar 2010 04:28:53 -0500 Subject: [PATCH] Really fix the ugly-ass desync by re-adding some code i accidentally deleted on the first chmode.c override commit. --- src/chmode.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/chmode.c b/src/chmode.c index 0301dfd..d0c8324 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -2158,16 +2158,29 @@ set_channel_mode(struct Client *client_p, struct Client *source_p, } } - if(override) + if(paralen && parabuf[paralen - 1] == ' ') + parabuf[paralen - 1] = '\0'; + + *mbuf = '\0'; + if(cur_len > mlen) { - if(!was_on_chan) - remove_user_from_channel(find_channel_membership(chptr, source_p)); - else if (!no_override_deop) - msptr->flags &= ~CHFL_CHANOP; + sendto_channel_local(flags, chptr, "%s%s %s", cmdbuf, modebuf, parabuf); + if(override) + sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, + "%s is overriding modes on %s: %s %s", + get_oper_name(source_p), chptr->chname, + modebuf, parabuf); } + } + if(override) + { + if(!was_on_chan) + remove_user_from_channel(find_channel_membership(chptr, source_p)); + else if (!no_override_deop) + msptr->flags &= ~CHFL_CHANOP; + } } /* only propagate modes originating locally, or if we're hubbing */ if(MyClient(source_p) || rb_dlink_list_length(&serv_list) > 1) send_cap_mode_changes(client_p, source_p, chptr, mode_changes, mode_count); - } }