From ade5b8c1d7df2eeacb7a7796996bc135e8b3c7dd Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 17 Nov 2013 20:24:04 +0000 Subject: git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@2568 82007160-df01-0410-b94d-b575c5fd34c7 --- src/channel.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/channel.c b/src/channel.c index dfd8b8b..4994df2 100644 --- a/src/channel.c +++ b/src/channel.c @@ -684,9 +684,18 @@ find_channel_link(struct Client *client_p, struct Channel *chptr) if (!IsClient(client_p)) return NULL; - DLINK_FOREACH(ptr, client_p->channel.head) - if (((struct Membership *)ptr->data)->chptr == chptr) - return ptr->data; + if (dlink_list_length(&chptr->members) < dlink_list_length(&client_p->channel)) + { + DLINK_FOREACH(ptr, chptr->members.head) + if (((struct Membership *)ptr->data)->client_p == client_p) + return ptr->data; + } + else + { + DLINK_FOREACH(ptr, client_p->channel.head) + if (((struct Membership *)ptr->data)->chptr == chptr) + return ptr->data; + } return NULL; } -- cgit