+2009-01-12 Michael Poole <mdpoole@troilus.org>
+
+ * 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 <mdpoole@troilus.org>
* ircd/channel.c (modebuf_mode_uint): Fix bouncing of limit changes.
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
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;
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]);
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;
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]);