From 41e1984d7aee399c33c744ef7555049a16c222a1 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Thu, 17 Sep 2009 17:02:57 -0400 Subject: [PATCH] Fix clearing "helping" flag from users when parting other channels. src/chanserv.c (handle_part): Allow the current user to be considered for channels other than the channel being /part'ed. --- src/chanserv.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/chanserv.c b/src/chanserv.c index 2780729..f8ce1ae 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -6715,10 +6715,19 @@ handle_part(struct modeNode *mn, UNUSED_ARG(const char *reason)) if(IsHelping(mn->user) && IsSupportHelper(mn->user)) { unsigned int ii; - for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) - if(find_handle_in_channel(chanserv_conf.support_channels.list[ii], mn->user->handle_info, mn->user)) + for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) { + struct chanNode *channel; + struct userNode *exclude; + /* When looking at the channel that is being /part'ed, we + * have to skip over the client that is leaving. For + * other channels, we must not do that. + */ + channel = chanserv_conf.support_channels.list[ii]; + exclude = (channel == mn->channel) ? mn->user : NULL; + if(find_handle_in_channel(channel, mn->user->handle_info, exclude)) break; - if(ii == chanserv_conf.support_channels.used) + } + if(ii == chanserv_conf.support_channels.used) HANDLE_CLEAR_FLAG(mn->user->handle_info, HELPING); } } -- 2.20.1