From b34a7f6a284493c28fb5cf5a96e278fde0725ce2 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 26 Jul 2016 00:35:02 +0000 Subject: mda: fix address matching in address lists This is common when multiple participants are in a thread. --- lib/PublicInbox/MDA.pm | 2 +- t/precheck.t | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/PublicInbox/MDA.pm b/lib/PublicInbox/MDA.pm index 0f583e65..bcf5358b 100644 --- a/lib/PublicInbox/MDA.pm +++ b/lib/PublicInbox/MDA.pm @@ -64,7 +64,7 @@ sub alias_specified { } @address; foreach my $line ($simple->header('Cc'), $simple->header('To')) { - my @addrs = ($line =~ /([^<\s]+\@[^>\s]+)/g); + my @addrs = ($line =~ /([^,<\s]+\@[^,>\s]+)/g); foreach my $addr (@addrs) { if ($ok{lc(__drop_plus($addr))}) { return 1; diff --git a/t/precheck.t b/t/precheck.t index 6c353d8d..0c3ce1c4 100644 --- a/t/precheck.t +++ b/t/precheck.t @@ -26,6 +26,23 @@ sub do_checks { "alias list is OK"); } +{ + my $s = Email::Simple->create( + header => [ + From => 'abc@example.com', + To => 'abc@example.com', + Cc => 'c@example.com, another-list@example.com', + 'Content-Type' => 'text/plain', + Subject => 'list is fine', + 'Message-ID' => '', + Date => 'Wed, 09 Apr 2014 01:28:34 +0000', + ], + body => "hello world\n", + ); + my $addr = [ 'c@example.com', 'd@example.com' ]; + ok(PublicInbox::MDA->precheck($s, $addr), 'Cc list is OK'); +} + { do_checks(Email::Simple->create( header => [ -- cgit v1.2.3-24-ge0c7