We only want to store TAGMSG that should be persistent. +typing TAGMSG
should be dropped, but +react messages should be kept.
This introduces a whitelist for TAGMSG labels. We only store TAGMSG
having a least one tag in that whitelist.
---
upstream.go | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/upstream.go b/upstream.go
index 49e5a76..542d742 100644
--- a/upstream.go
+++ b/upstream.go
@@ -44,6 +44,12 @@ var permanentUpstreamCaps = map[string]bool{
"draft/extended-monitor": true,
}
+// storableMessageTags is the static list of message tags that will cause
+// a TAGMSG to be stored.
+var storableMessageTags = map[string]bool{
+ "+react": true,
+}
+
type registrationError struct {
*irc.Message
}
@@ -2096,6 +2102,18 @@ func (uc *upstreamConn) appendLog(entity string, msg *irc.Message) (msgID string
if uc.user.msgStore == nil {
return ""
}
+ if msg.Command == "TAGMSG" {
+ store := false
+ for tag := range storableMessageTags {
+ if _, ok := msg.Tags[tag]; ok {
+ store = true
+ break
+ }
+ }
+ if !store {
+ return ""
+ }
+ }
// Don't store messages with a server mask target
if strings.HasPrefix(entity, "$") {
base-commit: 6ddfc943f5a2f77f00ef2fc0a19787918e31999e
--
2.17.1