From ced1382eab2f7904a98524b2d5ec50c28f035f0a Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Sun, 2 Nov 2025 15:43:10 +0100 Subject: [PATCH] Fix channel messages not showing up on remote servers (6.1.2-rc2 bug). This required two members on the same server and channel mode +H to be set (or set::broadcast-channel-messages 'always', then also with -H). The cause was a (normally harmless) optimization in 1473f52603bfa54e116f31e977d10a3f8d206213 which meant we would loop through remote servers for the case of +H. And then the real cause a bug in the linecache system, which caused servers to be seen as LCUT_NORMAL because locally connected servers are MyConnect()->true. And then on the wire (S2S) a message would look like.. :nick!user@host PRIVMSG ... But nick!user@host is not valid in normal S2S traffic and on the receiving server is seen as a nick@server message (and 'nick!user' is never found on 'server' where server is actually a user host)... seems like an old relic, but this aside. This in turn, causing the message to be dropped (unknown source), and the PRIVMSG handler is not called at all. Bug reported by CrazyCat and then PeGaSuS managed to reproduce the issue later on irc.unrealircd.org. Thanks! As said, this only affects 6.1.2-rc2 and chmode +H. --- src/send.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/send.c b/src/send.c index 6908214c5..65e68a331 100644 --- a/src/send.c +++ b/src/send.c @@ -1124,7 +1124,7 @@ static void linecache_free(LineCache *cache) static LineCacheUserType linecache_usertype(Client *to) { - if (!MyConnect(to)) + if (!MyConnect(to) || IsServer(to)) return LCUT_REMOTE; if (IsOper(to)) return LCUT_OPER;