mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-06-12 19:14:46 +02:00
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
1473f52603 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.
This commit is contained in:
+1
-1
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user