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.
This commit is contained in:
parent
c8a54235d0
commit
ec26117c08
@ -1382,6 +1382,7 @@ func (dc *downstreamConn) handleMessageRegistered(msg *irc.Message) error {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
|
// TODO: only do this in multi-upstream mode
|
||||||
dc.SendMessage(&irc.Message{
|
dc.SendMessage(&irc.Message{
|
||||||
Prefix: dc.srv.prefix(),
|
Prefix: dc.srv.prefix(),
|
||||||
Command: irc.RPL_UMODEIS,
|
Command: irc.RPL_UMODEIS,
|
||||||
@ -1557,7 +1558,7 @@ func (dc *downstreamConn) handleMessageRegistered(msg *irc.Message) error {
|
|||||||
entity := msg.Params[0]
|
entity := msg.Params[0]
|
||||||
entityCM := casemapASCII(entity)
|
entityCM := casemapASCII(entity)
|
||||||
|
|
||||||
if entityCM == dc.nickCM {
|
if dc.network == nil && entityCM == dc.nickCM {
|
||||||
// TODO: support AWAY (H/G) in self WHO reply
|
// TODO: support AWAY (H/G) in self WHO reply
|
||||||
dc.SendMessage(&irc.Message{
|
dc.SendMessage(&irc.Message{
|
||||||
Prefix: dc.srv.prefix(),
|
Prefix: dc.srv.prefix(),
|
||||||
@ -1622,7 +1623,7 @@ func (dc *downstreamConn) handleMessageRegistered(msg *irc.Message) error {
|
|||||||
mask = mask[:i]
|
mask = mask[:i]
|
||||||
}
|
}
|
||||||
|
|
||||||
if casemapASCII(mask) == dc.nickCM {
|
if dc.network == nil && casemapASCII(mask) == dc.nickCM {
|
||||||
dc.SendMessage(&irc.Message{
|
dc.SendMessage(&irc.Message{
|
||||||
Prefix: dc.srv.prefix(),
|
Prefix: dc.srv.prefix(),
|
||||||
Command: irc.RPL_WHOISUSER,
|
Command: irc.RPL_WHOISUSER,
|
||||||
|
Loading…
Reference in New Issue
Block a user