upstream: improve server message detection
Stop relying on user/host being unset: this is fragile, some servers send messages coming from users without these.
This commit is contained in:
parent
ebe209b3a4
commit
ca3557d9ef
48
upstream.go
48
upstream.go
@ -503,36 +503,38 @@ func (uc *upstreamConn) handleMessage(ctx context.Context, msg *irc.Message) err
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if msg.Prefix.User == "" && msg.Prefix.Host == "" { // server message
|
if msg.Prefix.Name == uc.serverPrefix.Name || msg.Prefix.Name == "*" || strings.HasPrefix(target, "$") {
|
||||||
|
// This is a server message
|
||||||
uc.produce("", msg, 0)
|
uc.produce("", msg, 0)
|
||||||
} else { // regular user message
|
break
|
||||||
bufferName := target
|
}
|
||||||
if uc.isOurNick(target) {
|
|
||||||
bufferName = msg.Prefix.Name
|
bufferName := target
|
||||||
|
if uc.isOurNick(target) {
|
||||||
|
bufferName = msg.Prefix.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
self := uc.isOurNick(msg.Prefix.Name)
|
||||||
|
|
||||||
|
ch := uc.network.channels.Get(bufferName)
|
||||||
|
if ch != nil && msg.Command != "TAGMSG" && !self {
|
||||||
|
if ch.Detached {
|
||||||
|
uc.handleDetachedMessage(ctx, ch, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
self := uc.isOurNick(msg.Prefix.Name)
|
highlight := uc.network.isHighlight(msg)
|
||||||
|
if ch.DetachOn == database.FilterMessage || ch.DetachOn == database.FilterDefault || (ch.DetachOn == database.FilterHighlight && highlight) {
|
||||||
ch := uc.network.channels.Get(bufferName)
|
uc.updateChannelAutoDetach(bufferName)
|
||||||
if ch != nil && msg.Command != "TAGMSG" && !self {
|
|
||||||
if ch.Detached {
|
|
||||||
uc.handleDetachedMessage(ctx, ch, msg)
|
|
||||||
}
|
|
||||||
|
|
||||||
highlight := uc.network.isHighlight(msg)
|
|
||||||
if ch.DetachOn == database.FilterMessage || ch.DetachOn == database.FilterDefault || (ch.DetachOn == database.FilterHighlight && highlight) {
|
|
||||||
uc.updateChannelAutoDetach(bufferName)
|
|
||||||
}
|
|
||||||
if highlight {
|
|
||||||
uc.network.broadcastWebPush(ctx, msg)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if ch == nil && uc.isOurNick(target) {
|
if highlight {
|
||||||
uc.network.broadcastWebPush(ctx, msg)
|
uc.network.broadcastWebPush(ctx, msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
uc.produce(bufferName, msg, downstreamID)
|
|
||||||
}
|
}
|
||||||
|
if ch == nil && uc.isOurNick(target) {
|
||||||
|
uc.network.broadcastWebPush(ctx, msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
uc.produce(bufferName, msg, downstreamID)
|
||||||
case "CAP":
|
case "CAP":
|
||||||
var subCmd string
|
var subCmd string
|
||||||
if err := parseMessageParams(msg, nil, &subCmd); err != nil {
|
if err := parseMessageParams(msg, nil, &subCmd); err != nil {
|
||||||
|
Loading…
Reference in New Issue
Block a user