From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.0 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id F1511203E2 for ; Tue, 26 Jul 2016 00:36:32 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH] mda: fix address matching in address lists Date: Tue, 26 Jul 2016 00:36:32 +0000 Message-Id: <20160726003632.3745-1-e@80x24.org> List-Id: 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 0f583e6..bcf5358 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 6c353d8..0c3ce1c 100644 --- a/t/precheck.t +++ b/t/precheck.t @@ -27,6 +27,23 @@ sub do_checks { } { + 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 => [ From => 'a@example.com', -- EW