From ac981f7cf5c24cdbd1955eb64493d6723c405b31 Mon Sep 17 00:00:00 2001 From: Michael Poole Date: Wed, 4 Mar 2009 23:16:51 -0500 Subject: [PATCH] Fix handling of multiple users on a +h account in the support channel(s). Do not remove +g from a +h account when one of several users on the account leave a support channel, which gix reported in SF#2649505. src/chanserv.c (handle_part): Keep the +g flag if any user on the same account is in any support channel. src/nickserv.c (nickserv_apply_flags): Likewise here, for flag changes. --- src/chanserv.c | 11 +++-------- src/nickserv.c | 10 +++------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/chanserv.c b/src/chanserv.c index 23a55b5..e039fbf 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -6695,16 +6695,11 @@ handle_part(struct modeNode *mn, UNUSED_ARG(const char *reason)) if(IsHelping(mn->user) && IsSupportHelper(mn->user)) { - unsigned int ii, jj; + unsigned int ii; for(ii = 0; ii < chanserv_conf.support_channels.used; ++ii) - { - for(jj = 0; jj < mn->user->channels.used; ++jj) - if(mn->user->channels.list[jj]->channel == chanserv_conf.support_channels.list[ii]) - break; - if(jj < mn->user->channels.used) + if(find_handle_in_channel(chanserv_conf.support_channels.list[ii], mn->user->handle_info, mn->user)) break; - } - if(ii == chanserv_conf.support_channels.used) + if(ii == chanserv_conf.support_channels.used) HANDLE_CLEAR_FLAG(mn->user->handle_info, HELPING); } } diff --git a/src/nickserv.c b/src/nickserv.c index 024364f..4c3e931 100644 --- a/src/nickserv.c +++ b/src/nickserv.c @@ -2171,14 +2171,10 @@ nickserv_apply_flags(struct userNode *user, struct handle_info *hi, const char * struct channelList *schannels; unsigned int ii; schannels = chanserv_support_channels(); - for (uNode = hi->users; uNode; uNode = uNode->next_authed) { - for (ii = 0; ii < schannels->used; ++ii) - if (GetUserMode(schannels->list[ii], uNode)) - break; - if (ii < schannels->used) + for (ii = 0; ii < schannels->used; ++ii) + if (find_handle_in_channel(schannels->list[ii], hi, NULL)) break; - } - if (!uNode) + if (ii == schannels->used) HANDLE_CLEAR_FLAG(hi, HELPING); } -- 2.20.1