From ed75c0a7f1b7d6758be3942746675ff94071d154 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Tue, 11 Apr 2023 16:53:24 +0200 Subject: pkg/email/lore: skip syzbot-started subthreads Adjust tests. --- pkg/email/lore/parse.go | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'pkg/email/lore/parse.go') diff --git a/pkg/email/lore/parse.go b/pkg/email/lore/parse.go index 6d90f9ee5..84bb56352 100644 --- a/pkg/email/lore/parse.go +++ b/pkg/email/lore/parse.go @@ -36,22 +36,33 @@ func (c *parseCtx) record(msg *email.Email) { func (c *parseCtx) threads() []*Thread { threads := map[string]*Thread{} threadsList := []*Thread{} + + newThread := func(msg *email.Email) { + thread := &Thread{ + MessageID: msg.MessageID, + Subject: msg.Subject, + } + threads[msg.MessageID] = thread + threadsList = append(threadsList, thread) + } + // Detect threads, i.e. messages without In-Reply-To. for _, msg := range c.messages { if msg.InReplyTo == "" { - thread := &Thread{ - MessageID: msg.MessageID, - Subject: msg.Subject, - } - threads[msg.MessageID] = thread - threadsList = append(threadsList, thread) + newThread(msg) } } // Assign messages to threads. for _, msg := range c.messages { base := c.first(msg) if base == nil { - continue + if msg.OwnEmail { + // Likely bot's reply to a non-public command. Ignore. + continue + } + // Pretend it's a separate discussion. + newThread(msg) + base = msg } thread := threads[base.MessageID] thread.BugIDs = append(thread.BugIDs, msg.BugIDs...) -- cgit mrf-deployment