X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=ircd%2Fchannel.c;h=588ccf22c0e966d56b1f2acc8ca9afc42abffc09;hb=6f6ecfa84e0ddf91eb463d1266cfad22129e07b4;hp=aa266307b4dbbc5ad26739aabfb1b31eeb20b2da;hpb=bdcbb7e5fe904bc2eabe087a03b8294b4de6ef6a;p=ircu2.10.12-pk.git diff --git a/ircd/channel.c b/ircd/channel.c index aa26630..588ccf2 100644 --- a/ircd/channel.c +++ b/ircd/channel.c @@ -3526,7 +3526,24 @@ mode_process_clients(struct ParseState *state) sendcmdto_channel_butserv_butone(member->user, CMD_PART, member->channel, member->user, SKIP_OPS, "%H :%s", member->channel, "user deoped/devoiced on a +u channel."); } if(MyUser(member->user) && (state->cli_change[i].flag & MODE_CHANOP)) { - do_names(member->user, member->channel, NAMES_ALL|NAMES_EON|((member->status & MODE_CHANOP) ? 0 : NAMES_OPS)); + //do_names(member->user, member->channel, NAMES_ALL|NAMES_EON|((member->status & MODE_CHANOP) ? 0 : NAMES_OPS)); + //this is not woring for all users :( so we have to send join/part events + struct Membership *member2; + if (state->cli_change[i].flag & MODE_ADD) { + //JOIN events + for(member2 = state->chptr->members; member2; member2 = member->next_member) { + if(!IsChanOp(member2) && !HasVoice(member2)) { + sendcmdto_one(member->user, CMD_JOIN, member2->user, ":%H", member->channel); + } + } + } else { + //PART ebents + for(member2 = state->chptr->members; member2; member2 = member->next_member) { + if(!IsChanOp(member2) && !HasVoice(member2) && member != member2) { + sendcmdto_one(member->user, CMD_PART, member2->user, "%H :%s", member->channel, "invisible user on +u channel."); + } + } + } } } } /* for (i = 0; state->cli_change[i].flags; i++) */