diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2022-11-17 16:11:21 +0000 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2022-11-21 16:36:47 +0100 |
| commit | b0668b991fa57cd3934dc5e93ddef45e56a3462c (patch) | |
| tree | 667333b75f2e081a17b88c5a40a371e161c01453 | |
| parent | ed183554eb19dc7e173e1952381115c816883437 (diff) | |
dashboard: reduce CanonicalEmail calls
Sometimes we call it before accessing emails, sometimes we do not. This
is prone to errors.
Always canonicalize From and Cc, this should somewhat reduce the problem.
| -rw-r--r-- | dashboard/app/email_test.go | 4 | ||||
| -rw-r--r-- | dashboard/app/reporting_email.go | 10 | ||||
| -rw-r--r-- | pkg/email/parser.go | 4 | ||||
| -rw-r--r-- | pkg/email/parser_test.go | 24 |
4 files changed, 21 insertions, 21 deletions
diff --git a/dashboard/app/email_test.go b/dashboard/app/email_test.go index 2a6600aae..2b24ea42d 100644 --- a/dashboard/app/email_test.go +++ b/dashboard/app/email_test.go @@ -322,7 +322,7 @@ Content-Type: text/plain { msg := c.pollEmailBug() - c.expectEQ(msg.To, []string{"<foo@bar.com>"}) + c.expectEQ(msg.To, []string{"foo@bar.com"}) c.expectEQ(msg.Subject, "Re: title1") c.expectEQ(msg.Headers["In-Reply-To"], []string{"<abcdef>"}) if !strings.Contains(msg.Body, `> #syz bad-command @@ -576,7 +576,7 @@ func TestEmailErrors(t *testing.T) { // If email contains a command we need to reply. c.incomingEmail("syzbot@testapp.appspotmail.com", "#syz invalid") reply := c.pollEmailBug() - c.expectEQ(reply.To, []string{"<default@sender.com>"}) + c.expectEQ(reply.To, []string{"default@sender.com"}) c.expectEQ(reply.Body, `> #syz invalid I see the command but can't find the corresponding bug. diff --git a/dashboard/app/reporting_email.go b/dashboard/app/reporting_email.go index ea25721b3..95c9e1b91 100644 --- a/dashboard/app/reporting_email.go +++ b/dashboard/app/reporting_email.go @@ -305,7 +305,7 @@ func incomingMail(c context.Context, r *http.Request) error { // A mailing list can send us a duplicate email, to not process/reply // to such duplicate emails, we ignore emails coming from our mailing lists. mailingList := email.CanonicalEmail(emailConfig.Email) - fromMailingList := email.CanonicalEmail(msg.From) == mailingList + fromMailingList := msg.From == mailingList mailingListInCC := checkMailingListInCC(c, msg, mailingList) log.Infof(c, "from/cc mailing list: %v/%v", fromMailingList, mailingListInCC) if msg.Command == email.CmdTest { @@ -339,7 +339,7 @@ func incomingMail(c context.Context, r *http.Request) error { cmd.DupOf = strings.TrimSpace(strings.TrimPrefix(cmd.DupOf, replySubjectPrefix)) cmd.DupOf = strings.TrimSpace(strings.TrimPrefix(cmd.DupOf, emailConfig.SubjectPrefix)) case email.CmdUnCC: - cmd.CC = []string{email.CanonicalEmail(msg.From)} + cmd.CC = []string{msg.From} default: if msg.Command != email.CmdUnknown { log.Errorf(c, "unknown email command %v %q", msg.Command, msg.CommandStr) @@ -377,7 +377,7 @@ func handleTestCommand(c context.Context, info *bugInfoResult, msg *email.Email) } reply := handleTestRequest(c, &testReqArgs{ bug: info.bug, bugKey: info.bugKey, bugReporting: info.bugReporting, - user: email.CanonicalEmail(msg.From), extID: msg.MessageID, link: msg.Link, + user: msg.From, extID: msg.MessageID, link: msg.Link, patch: msg.Patch, repo: args[0], branch: args[1], jobCC: msg.Cc}) if reply != "" { return replyTo(c, msg, reply) @@ -577,11 +577,11 @@ func (p *subjectTitleParser) prepareRegexps() { } func checkMailingListInCC(c context.Context, msg *email.Email, mailingList string) bool { - if email.CanonicalEmail(msg.From) == mailingList { + if msg.From == mailingList { return true } for _, cc := range msg.Cc { - if email.CanonicalEmail(cc) == mailingList { + if cc == mailingList { return true } } diff --git a/pkg/email/parser.go b/pkg/email/parser.go index 2975d2de7..6c0fb22d4 100644 --- a/pkg/email/parser.go +++ b/pkg/email/parser.go @@ -94,7 +94,7 @@ func Parse(r io.Reader, ownEmails []string) (*Email, error) { bugID = context } } else { - ccList = append(ccList, cleaned) + ccList = append(ccList, CanonicalEmail(cleaned)) } } ccList = MergeEmailLists(ccList) @@ -138,7 +138,7 @@ func Parse(r io.Reader, ownEmails []string) (*Email, error) { MessageID: msg.Header.Get("Message-ID"), Link: link, Subject: subject, - From: from[0].String(), + From: CanonicalEmail(from[0].Address), Cc: ccList, Sender: sender, Body: bodyStr, diff --git a/pkg/email/parser_test.go b/pkg/email/parser_test.go index 1593a22fd..d50e86cff 100644 --- a/pkg/email/parser_test.go +++ b/pkg/email/parser_test.go @@ -158,8 +158,8 @@ line1 #syz fix bar baz line 2 `, - cmd: CmdFix, - str: "fix", + cmd: CmdFix, + str: "fix", args: "bar baz", }, { @@ -357,7 +357,7 @@ For more options, visit https://groups.google.com/d/optout.`, MessageID: "<123>", Link: "https://groups.google.com/d/msgid/syzkaller/abcdef@google.com", Subject: "test subject", - From: "\"Bob\" <bob@example.com>", + From: "bob@example.com", Cc: []string{"bob@example.com"}, Body: `text body second line @@ -388,7 +388,7 @@ last line`, BugID: "4564456", MessageID: "<123>", Subject: "test subject", - From: "\"syzbot\" <foo+4564456@bar.com>", + From: "foo@bar.com", Cc: []string{"bob@example.com"}, Body: `text body last line`, @@ -409,7 +409,7 @@ last line`, Email{ MessageID: "<123>", Subject: "test subject", - From: "\"Bob\" <bob@example.com>", + From: "bob@example.com", Cc: []string{"alice@example.com", "bob@example.com", "bot@example.com"}, Body: `#syz invalid text body @@ -435,7 +435,7 @@ last line Email{ MessageID: "<123>", Subject: "test subject", - From: "\"Bob\" <bob@example.com>", + From: "bob@example.com", Cc: []string{"alice@example.com", "bob@example.com", "bot@example.com"}, Body: `text body second line @@ -475,7 +475,7 @@ IHQpKSB7CiAJCXNwaW5fdW5sb2NrKCZrY292LT5sb2NrKTsKIAkJcmV0dXJuOwo= Email{ MessageID: "<123>", Subject: "test subject", - From: "\"Bob\" <bob@example.com>", + From: "bob@example.com", Cc: []string{"bob@example.com", "bot@example.com"}, Body: `body text >#syz test @@ -563,7 +563,7 @@ or)</div></div></div> Email{ MessageID: "<123>", Subject: "test subject", - From: "\"Bob\" <bob@example.com>", + From: "bob@example.com", Cc: []string{"bob@example.com", "bot@example.com"}, Body: `On Mon, May 8, 2017 at 6:47 PM, Bob wrote: > body text @@ -640,7 +640,7 @@ d `, Email{ MessageID: "<1250334f-7220-2bff-5d87-b87573758d81@bar.com>", Subject: "Re: BUG: unable to handle kernel NULL pointer dereference in sock_poll", - From: "\"bar\" <bar@foo.com>", + From: "bar@foo.com", Cc: []string{"bar@foo.com", "syzbot@syzkaller.appspotmail.com"}, Sender: "syzkaller-bugs@googlegroups.com", Body: `On 2018/06/10 4:57, syzbot wrote: @@ -667,7 +667,7 @@ From: bar@foo.com #syz dup: BUG: unable to handle kernel NULL pointer dereference in corrupted `, Email{ - From: "<bar@foo.com>", + From: "bar@foo.com", Cc: []string{"bar@foo.com", "syzbot@syzkaller.appspotmail.com"}, Sender: "syzkaller-bugs@googlegroups.com", Body: `#syz dup: @@ -685,7 +685,7 @@ From: bar@foo.com #syz fix: When freeing a lockf struct that already is part of a linked list, make sure to `, Email{ - From: "<bar@foo.com>", + From: "bar@foo.com", Cc: []string{"bar@foo.com", "syzbot@syzkaller.appspotmail.com"}, Sender: "syzkaller-bugs@googlegroups.com", Body: `#syz fix: @@ -707,7 +707,7 @@ nothing to see here`, BugID: "4564456", MessageID: "<123>", Subject: "#syz test: git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git master", - From: "<bob@example.com>", + From: "bob@example.com", Cc: []string{"bob@example.com"}, Body: `nothing to see here`, Command: CmdTest, |
