From ec26117c081bbb3406ea04d3ed1bb4f9cec4ab63 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Thu, 20 May 2021 11:13:14 +0200 Subject: [PATCH] Relay self-WHO/WHOIS in single-upstream mode In multi-upstream mode, we can't relay WHO/WHOIS messages for the current user, because we can't decide which upstream server the message should be relayed to. In single-upstream server, we do know which upstream server to use, so we can just blindly relay the message. This allows users to send a self-WHO/WHOIS to check their cloak and other information. --- downstream.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/downstream.go b/downstream.go index e27b4a9..ef9da6e 100644 --- a/downstream.go +++ b/downstream.go @@ -1382,6 +1382,7 @@ func (dc *downstreamConn) handleMessageRegistered(msg *irc.Message) error { }) }) } else { + // TODO: only do this in multi-upstream mode dc.SendMessage(&irc.Message{ Prefix: dc.srv.prefix(), Command: irc.RPL_UMODEIS, @@ -1557,7 +1558,7 @@ func (dc *downstreamConn) handleMessageRegistered(msg *irc.Message) error { entity := msg.Params[0] entityCM := casemapASCII(entity) - if entityCM == dc.nickCM { + if dc.network == nil && entityCM == dc.nickCM { // TODO: support AWAY (H/G) in self WHO reply dc.SendMessage(&irc.Message{ Prefix: dc.srv.prefix(), @@ -1622,7 +1623,7 @@ func (dc *downstreamConn) handleMessageRegistered(msg *irc.Message) error { mask = mask[:i] } - if casemapASCII(mask) == dc.nickCM { + if dc.network == nil && casemapASCII(mask) == dc.nickCM { dc.SendMessage(&irc.Message{ Prefix: dc.srv.prefix(), Command: irc.RPL_WHOISUSER,