diff options
author | michael <michael@82007160-df01-0410-b94d-b575c5fd34c7> | 2013-11-17 20:24:04 +0000 |
---|---|---|
committer | michael <michael@82007160-df01-0410-b94d-b575c5fd34c7> | 2013-11-17 20:24:04 +0000 |
commit | ade5b8c1d7df2eeacb7a7796996bc135e8b3c7dd (patch) | |
tree | d575a56ea75b97398dbb57487e3fa315facecf6d /src | |
parent | 881c46b56874ce4e654e2c7e42e6a7cbc5d8c8cf (diff) |
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/branches/8.1.x@2568 82007160-df01-0410-b94d-b575c5fd34c7
Diffstat (limited to 'src')
-rw-r--r-- | src/channel.c | 15 |
1 files 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; } |