]> Sergey Matveev's repositories - public-inbox.git/commitdiff
mda: fix address matching in address lists
authorEric Wong <e@80x24.org>
Tue, 26 Jul 2016 00:35:02 +0000 (00:35 +0000)
committerEric Wong <e@80x24.org>
Tue, 26 Jul 2016 00:35:02 +0000 (00:35 +0000)
This is common when multiple participants are in a thread.

lib/PublicInbox/MDA.pm
t/precheck.t

index 0f583e65a6a2fb3473f4873fe766d42f523a0eb0..bcf5358bb6e6d7cd9e450e8f9c32c1db58f03ae1 100644 (file)
@@ -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;
index 6c353d8d8ccf5d2df38f9f1a82b0fb1547078786..0c3ce1c4a62b1fa52c6343e9a0a91853c7658d2b 100644 (file)
@@ -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' => '<MID@host>',
+                       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 => [