ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/contrib/m_clearchan.c
(Generate patch)

Comparing ircd-hybrid-7.2/contrib/m_clearchan.c (file contents):
Revision 615 by michael, Sun Apr 30 16:57:48 2006 UTC vs.
Revision 616 by michael, Mon May 22 07:10:56 2006 UTC

# Line 151 | Line 151 | mo_clearchan(struct Client *client_p, st
151   static void
152   kick_list(struct Client *source_p, struct Channel *chptr)
153   {
154 <  dlink_node *m = NULL, *next_m = NULL;
154 >  dlink_node *ptr = NULL, *ptr_next = NULL;
155 >  struct Membership *ms = NULL;
156  
157 <  add_user_to_channel(chptr, source_p, CHFL_CHANOP, NO);
157 <
158 <  DLINK_FOREACH_SAFE(m, next_m, chptr->members.head)
157 >  DLINK_FOREACH(ptr, chptr->members.head)
158    {
159 <    struct Membership *ms = m->data;
161 <
162 <    if (ms->client_p == source_p)
163 <      continue;
164 <
165 <    /* can reuse m here */
166 <    DLINK_FOREACH(m, chptr->members.head)
167 <    {
168 <      if (!MyConnect(source_p) ||
169 <          ((struct Membership *)m->data)->client_p == source_p)
170 <        continue;
171 <      sendto_one(m->data, ":%s!%s@%s KICK %s %s :CLEARCHAN",
172 <                 source_p->name, source_p->username,
173 <                 source_p->host,
174 <                 chptr->chname, ms->client_p->name);
175 <    }
159 >    ms = ptr->data;
160  
161 +    sendto_channel_local(ALL_MEMBERS, NO, chptr,
162 +                         ":%s!%s@%s KICK %s %s CLEARCHAN",
163 +                         source_p->name, source_p->username,
164 +                         source_p->host, chptr->chname, ms->client_p->name);
165      sendto_server(NULL, source_p, chptr, NOCAPS, NOCAPS, LL_ICLIENT,
166                    ":%s KICK %s %s :CLEARCHAN", source_p->name,
167                    chptr->chname, ms->client_p->name);
168 <    remove_user_from_channel(ms);
168 >  }
169 >
170 >  add_user_to_channel(chptr, source_p, CHFL_CHANOP, NO);
171 >
172 >  DLINK_FOREACH_SAFE(ptr, ptr_next, chptr->members.head)
173 >  {
174 >    ms = ptr->data;
175 >
176 >    if (ms->client_p != source_p)
177 >      remove_user_from_channel(ms);
178    }
179  
180    /*

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines