Q, or rather in general, a channel service normally does not change nicks?
and since Q does set quite a lot of bans (and topics), this might save a bit on bandwidth.
-diff -r bde54f5247bf include/channel.h
---- a/include/channel.h Mon Jan 12 18:28:44 2009 +0100
-+++ b/include/channel.h Mon Jan 12 18:45:19 2009 +0100
+diff -r 92e1c6ea0f59 include/channel.h
+--- a/include/channel.h Tue Mar 23 13:53:03 2010 +0100
++++ b/include/channel.h Tue Mar 23 13:55:09 2010 +0100
@@ -266,7 +266,8 @@
unsigned short flags; /**< modifier flags for the ban */
unsigned char nu_len; /**< length of nick!user part of banstr */
char banstr[NICKLEN+USERLEN+HOSTLEN+3]; /**< hostmask that the ban matches */
};
-diff -r bde54f5247bf ircd/channel.c
---- a/ircd/channel.c Mon Jan 12 18:28:44 2009 +0100
-+++ b/ircd/channel.c Mon Jan 12 18:45:19 2009 +0100
-@@ -1249,7 +1249,10 @@
+diff -r 92e1c6ea0f59 ircd/channel.c
+--- a/ircd/channel.c Tue Mar 23 13:53:03 2010 +0100
++++ b/ircd/channel.c Tue Mar 23 13:55:09 2010 +0100
+@@ -1304,7 +1304,10 @@
for (lp = chptr->banlist; lp; lp = lp->next)
send_reply(cptr, RPL_BANLIST, chptr->chname, lp->banstr,
send_reply(cptr, RPL_ENDOFBANLIST, chptr->chname);
}
-@@ -2965,8 +2968,12 @@
+@@ -3005,8 +3008,12 @@
if (!IsUser(state->sptr) ||
(feature_bool(FEAT_HIS_MODEWHO) && state->mbuf != NULL && (state->mbuf->mb_dest & MODEBUF_DEST_OPMODE))) {
ircd_strncpy(newban->who, "*", NICKLEN);
}
newban->when = TStime();
-@@ -3054,6 +3061,7 @@
+@@ -3095,6 +3102,7 @@
if (state->flags & MODE_PARSE_SET) { /* create a new ban */
newban = make_ban(ban->banstr);
strcpy(newban->who, ban->who);
newban->when = ban->when;
newban->flags = ban->flags & BAN_IPMASK;
-diff -r bde54f5247bf ircd/m_check.c
---- a/ircd/m_check.c Mon Jan 12 18:28:44 2009 +0100
-+++ b/ircd/m_check.c Mon Jan 12 18:45:19 2009 +0100
-@@ -348,8 +348,12 @@
- send_reply(sptr, RPL_DATASTR, "Bans on channel::");
+diff -r 92e1c6ea0f59 ircd/m_check.c
+--- a/ircd/m_check.c Tue Mar 23 13:53:03 2010 +0100
++++ b/ircd/m_check.c Tue Mar 23 13:55:09 2010 +0100
+@@ -348,8 +348,10 @@
for (ban = chptr->banlist; ban; ban = ban->next) {
-- ircd_snprintf(0, outbuf, sizeof(outbuf), "[%d] - %s - Set by %s, on %s (%Tu)",
+ send_reply(sptr, SND_EXPLICIT | RPL_DATASTR,
+- ":[%d] - %s - Set by %s, on %s (%Tu)",
- ++bans, ban->banstr, ban->who, myctime(ban->when), ban->when);
-+ ircd_snprintf(0, outbuf, sizeof(outbuf), "[%d] - %s - Set by %s%s%s, on %s (%Tu)",
++ ":[%d] - %s - Set by %s%s%s, on %s (%Tu)",
+ ++bans, ban->banstr,
-+ ban->who,
-+ ban->who_is_account ? "." : "",
-+ ban->who_is_account ? feature_str(FEAT_HIDDEN_HOST) : "",
++ ban->who, ban->who_is_account ? "." : "", ban->who_is_account ? feature_str(FEAT_HIDDEN_HOST) : "",
+ myctime(ban->when), ban->when);
- send_reply(sptr, RPL_DATASTR, outbuf);
}
-diff -r bde54f5247bf ircd/s_err.c
---- a/ircd/s_err.c Mon Jan 12 18:28:44 2009 +0100
-+++ b/ircd/s_err.c Mon Jan 12 18:45:19 2009 +0100
+ if (bans == 0)
+diff -r 92e1c6ea0f59 ircd/s_err.c
+--- a/ircd/s_err.c Tue Mar 23 13:53:03 2010 +0100
++++ b/ircd/s_err.c Tue Mar 23 13:55:09 2010 +0100
@@ -766,7 +766,7 @@
/* 366 */
{ RPL_ENDOFNAMES, "%s :End of /NAMES list.", "366" },
See info in whoban.patch
-diff -r cf06941d928b include/channel.h
---- a/include/channel.h Mon Jan 12 15:14:47 2009 +0100
-+++ b/include/channel.h Mon Jan 12 15:31:24 2009 +0100
+diff -r 63c8cdb5dc47 include/channel.h
+--- a/include/channel.h Tue Mar 23 13:48:36 2010 +0100
++++ b/include/channel.h Tue Mar 23 13:56:29 2010 +0100
@@ -285,9 +285,10 @@
struct Mode mode; /**< This channels mode */
unsigned int marker; /**< Channel marker */
char chname[1]; /**< Dynamically allocated string of the
* channel name
*/
-diff -r cf06941d928b ircd/m_burst.c
---- a/ircd/m_burst.c Mon Jan 12 15:14:47 2009 +0100
-+++ b/ircd/m_burst.c Mon Jan 12 15:31:24 2009 +0100
-@@ -369,7 +369,8 @@
+diff -r 63c8cdb5dc47 ircd/m_burst.c
+--- a/ircd/m_burst.c Tue Mar 23 13:48:36 2010 +0100
++++ b/ircd/m_burst.c Tue Mar 23 13:56:29 2010 +0100
+@@ -361,7 +361,8 @@
/* clear topic set by netrider (if set) */
if (*chptr->topic) {
*chptr->topic = '\0';
chptr->topic_time = 0;
sendcmdto_channel_butserv_butone(&his, CMD_TOPIC, chptr, NULL, 0,
"%H :%s", chptr, chptr->topic);
-diff -r cf06941d928b ircd/m_check.c
---- a/ircd/m_check.c Mon Jan 12 15:14:47 2009 +0100
-+++ b/ircd/m_check.c Mon Jan 12 15:31:24 2009 +0100
-@@ -380,7 +380,10 @@
- send_reply(sptr, RPL_DATASTR, outbuf);
+diff -r 63c8cdb5dc47 ircd/m_check.c
+--- a/ircd/m_check.c Tue Mar 23 13:48:36 2010 +0100
++++ b/ircd/m_check.c Tue Mar 23 13:56:29 2010 +0100
+@@ -378,7 +378,8 @@
+ send_reply(sptr, SND_EXPLICIT | RPL_DATASTR, ": Topic:: %s", chptr->topic);
/* ..set by */
-- ircd_snprintf(sptr, outbuf, sizeof(outbuf), " Set by:: %s", chptr->topic_nick);
-+ ircd_snprintf(sptr, outbuf, sizeof(outbuf), " Set by:: %s%s%s",
-+ chptr->topic_who,
-+ chptr->topic_who_is_account ? "." : "",
-+ chptr->topic_who_is_account ? feature_str(FEAT_HIDDEN_HOST) : "");
- send_reply(sptr, RPL_DATASTR, outbuf);
+- send_reply(sptr, SND_EXPLICIT | RPL_DATASTR, ": Set by:: %s", chptr->topic_nick);
++ send_reply(sptr, SND_EXPLICIT | RPL_DATASTR, ": Set by:: %s%s%s",
++ chptr->topic_who, chptr->topic_who_is_account ? "." : "", chptr->topic_who_is_account ? feature_str(FEAT_HIDDEN_HOST) : "");
- ircd_snprintf(sptr, outbuf, sizeof(outbuf), " Set at:: %s (%Tu)", myctime(chptr->topic_time), chptr->topic_time);
-diff -r cf06941d928b ircd/m_join.c
---- a/ircd/m_join.c Mon Jan 12 15:14:47 2009 +0100
-+++ b/ircd/m_join.c Mon Jan 12 15:31:24 2009 +0100
+ send_reply(sptr, SND_EXPLICIT | RPL_DATASTR, ": Set at:: %s (%Tu)", myctime(chptr->topic_time), chptr->topic_time);
+ }
+diff -r 63c8cdb5dc47 ircd/m_join.c
+--- a/ircd/m_join.c Tue Mar 23 13:48:36 2010 +0100
++++ b/ircd/m_join.c Tue Mar 23 13:56:29 2010 +0100
@@ -283,7 +283,10 @@
if (chptr->topic[0]) {
chptr->topic_time);
}
-diff -r cf06941d928b ircd/m_topic.c
---- a/ircd/m_topic.c Mon Jan 12 15:14:47 2009 +0100
-+++ b/ircd/m_topic.c Mon Jan 12 15:31:24 2009 +0100
+diff -r 63c8cdb5dc47 ircd/m_topic.c
+--- a/ircd/m_topic.c Tue Mar 23 13:48:36 2010 +0100
++++ b/ircd/m_topic.c Tue Mar 23 13:56:29 2010 +0100
@@ -65,7 +65,10 @@
newtopic=ircd_strncmp(chptr->topic,topic,TOPICLEN)!=0;
/* setting a topic */
chptr->topic_time = ts ? ts : TStime();
/* Fixed in 2.10.11: Don't propagate local topics */
if (!IsLocalChannel(chptr->chname))
-@@ -129,7 +132,10 @@
+@@ -138,7 +141,10 @@
else
{
send_reply(sptr, RPL_TOPIC, chptr->chname, chptr->topic);
chptr->topic_time);
}
}
-diff -r cf06941d928b ircd/s_err.c
---- a/ircd/s_err.c Mon Jan 12 15:14:47 2009 +0100
-+++ b/ircd/s_err.c Mon Jan 12 15:31:24 2009 +0100
+diff -r 63c8cdb5dc47 ircd/s_err.c
+--- a/ircd/s_err.c Tue Mar 23 13:48:36 2010 +0100
++++ b/ircd/s_err.c Tue Mar 23 13:56:29 2010 +0100
@@ -698,7 +698,7 @@
/* 332 */
{ RPL_TOPIC, "%s :%s", "332" },