From: Michael Poole Date: Tue, 13 Jan 2009 03:54:45 +0000 (+0000) Subject: Author: Michael Poole X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=commitdiff_plain;h=73b468873b9040d72fc91da29229192ec8fc2393 Author: Michael Poole Description: Fix the issues described by weibe in SourceForge.net bug 2045310 (TOPIC, WALLCHOPS and WALLVOICES do not reveal join-delayed users). git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/branches/u2_10_12_branch@1903 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- diff --git a/ChangeLog b/ChangeLog index b9b169e..9931478 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-01-12 Michael Poole + + * ircd/m_topic.c (do_settopic): Just before sending the topic out, + check to see if the user is join-delayed and should be shown. + + * ircd/m_wallchops.c (m_wallchops): Allow this command to expose + join-delayed users. + (ms_wallchops): Likewise. + + * ircd/m_wallvoices.c (m_wallvoices): Allow this command to expose + join-delayed users. + (ms_wallvoices): Likewise. + 2009-01-12 Michael Poole * ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes. diff --git a/ircd/m_topic.c b/ircd/m_topic.c index 9ef803e..8eebf45 100644 --- a/ircd/m_topic.c +++ b/ircd/m_topic.c @@ -72,8 +72,17 @@ static void do_settopic(struct Client *sptr, struct Client *cptr, sendcmdto_serv_butone(sptr, CMD_TOPIC, cptr, "%H %Tu %Tu :%s", chptr, chptr->creationtime, chptr->topic_time, chptr->topic); if (newtopic) + { + struct Membership *member; + + /* If the member is delayed-join, show them. */ + member = find_channel_member(sptr, chptr); + if (member && IsDelayedJoin(member)) + RevealDelayedJoin(member); + sendcmdto_channel_butserv_butone(from, CMD_TOPIC, chptr, NULL, 0, "%H :%s", chptr, chptr->topic); + } /* if this is the same topic as before we send it to the person that * set it (so they knew it went through ok), but don't bother sending * it to everyone else on the channel to save bandwidth diff --git a/ircd/m_wallchops.c b/ircd/m_wallchops.c index a3a9133..5b60959 100644 --- a/ircd/m_wallchops.c +++ b/ircd/m_wallchops.c @@ -115,7 +115,7 @@ int m_wallchops(struct Client* cptr, struct Client* sptr, int parc, char* parv[] return send_reply(sptr, ERR_NOTEXTTOSEND); if (IsChannelName(parv[1]) && (chptr = FindChannel(parv[1]))) { - if (client_can_send_to_channel(sptr, chptr, 0)) { + if (client_can_send_to_channel(sptr, chptr, 1)) { if ((chptr->mode.mode & MODE_NOPRIVMSGS) && check_target_limit(sptr, chptr, chptr->chname, 0)) return 0; @@ -145,7 +145,7 @@ int ms_wallchops(struct Client* cptr, struct Client* sptr, int parc, char* parv[ return 0; if (!IsLocalChannel(parv[1]) && (chptr = FindChannel(parv[1]))) { - if (client_can_send_to_channel(sptr, chptr, 0)) { + if (client_can_send_to_channel(sptr, chptr, 1)) { sendcmdto_channel_butone(sptr, CMD_WALLCHOPS, chptr, cptr, SKIP_DEAF | SKIP_BURST | SKIP_NONOPS, "%H :%s", chptr, parv[parc - 1]); diff --git a/ircd/m_wallvoices.c b/ircd/m_wallvoices.c index 2fdc5f3..c5d0461 100644 --- a/ircd/m_wallvoices.c +++ b/ircd/m_wallvoices.c @@ -114,7 +114,7 @@ int m_wallvoices(struct Client* cptr, struct Client* sptr, int parc, char* parv[ return send_reply(sptr, ERR_NOTEXTTOSEND); if (IsChannelName(parv[1]) && (chptr = FindChannel(parv[1]))) { - if (client_can_send_to_channel(sptr, chptr, 0)) { + if (client_can_send_to_channel(sptr, chptr, 1)) { if ((chptr->mode.mode & MODE_NOPRIVMSGS) && check_target_limit(sptr, chptr, chptr->chname, 0)) return 0; @@ -144,7 +144,7 @@ int ms_wallvoices(struct Client* cptr, struct Client* sptr, int parc, char* parv return 0; if (!IsLocalChannel(parv[1]) && (chptr = FindChannel(parv[1]))) { - if (client_can_send_to_channel(sptr, chptr, 0)) { + if (client_can_send_to_channel(sptr, chptr, 1)) { sendcmdto_channel_butone(sptr, CMD_WALLVOICES, chptr, cptr, SKIP_DEAF | SKIP_BURST | SKIP_NONVOICES, "%H :%s", chptr, parv[parc - 1]);