aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2022-11-17 16:11:21 +0000
committerAleksandr Nogikh <wp32pw@gmail.com>2022-11-21 16:36:47 +0100
commitb0668b991fa57cd3934dc5e93ddef45e56a3462c (patch)
tree667333b75f2e081a17b88c5a40a371e161c01453
parented183554eb19dc7e173e1952381115c816883437 (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.go4
-rw-r--r--dashboard/app/reporting_email.go10
-rw-r--r--pkg/email/parser.go4
-rw-r--r--pkg/email/parser_test.go24
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,