]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/DB/Load.pm
switch all uses of MoreUtils to AllUtils
[debbugs.git] / Debbugs / DB / Load.pm
index e51a8b28841fb2492c1e6a9e99d9b4a7405e1768..4ad36d9f17fd1b895951f1bf1d7f2a6e4c20a66c 100644 (file)
@@ -42,7 +42,7 @@ BEGIN{
 }
 
 use Params::Validate qw(validate_with :types);
-use List::MoreUtils qw(natatime);
+use List::AllUtils qw(natatime);
 
 use Debbugs::Status qw(read_bug split_status_fields);
 use Debbugs::DB;
@@ -357,17 +357,19 @@ sub load_bug_log {
         next if defined $msg_id and $msg_id =~ /handler\..+\.ack(?:info)?\@/;
         my $entity = parse_to_mime_entity($record);
         # search for a message with this message id in the database
-        $msg_id = $entity->head->get('Message-Id:');
+        $msg_id = $entity->head->get('Message-Id') //
+            $entity->head->get('Resent-Message-ID') //
+            '';
        $msg_id =~ s/^\s*\<//;
        $msg_id =~ s/>\s*$//;
        # check to see if the subject, to, and from match. if so, it's
         # probably the same message.
-       my $subject = decode_rfc1522($entity->head->get('Subject:'));
-       $subject =~ s/\n(?:(\s)\s*|\s*$)/$1/g;
-       my $to = decode_rfc1522($entity->head->get('To:'));
-       $to =~ s/\n(?:(\s)\s*|\s*$)/$1/g;
-       my $from = decode_rfc1522($entity->head->get('From:'));
-       $from =~ s/\n(?:(\s)\s*|\s*$)/$1/g;
+       my $subject = decode_rfc1522($entity->head->get('Subject')//'');
+       $subject =~ s/\n(?:(\s)\s*|\s*$)//g;
+       my $to = decode_rfc1522($entity->head->get('To')//'');
+       $to =~ s/\n(?:(\s)\s*|\s*$)//g;
+       my $from = decode_rfc1522($entity->head->get('From')//'');
+       $from =~ s/\n(?:(\s)\s*|\s*$)//g;
        my $m = $s->resultset('Message')->
            find({msgid => $msg_id,
                  from_complete => $from,
@@ -383,24 +385,30 @@ sub load_bug_log {
                                subject => $subject
                               });
            eval {
-               $m->sent_date(DateTime::Format::Mail->
-                             parse_datetime($entity->head->get('Date:',0)));
+               my $date = DateTime::Format::Mail->
+                    parse_datetime($entity->head->get('Date',0));
+                if (abs($date->offset) >= 60 * 60 * 12) {
+                    $date = $date->set_time_zone('UTC');
+                }
+                $m->sent_date($date);
            };
-           my $spam = $entity->head->get('X-Spam-Status:',0);
+           my $spam = $entity->head->get('X-Spam-Status',0)//'';
            if ($spam=~ /score=([\d\.]+)/) {
                $m->spam_score($1);
            }
            my %corr;
            @{$corr{from}} = getparsedaddrs($from);
            @{$corr{to}} = getparsedaddrs($to);
-           @{$corr{cc}} = getparsedaddrs($entity->head->get('Cc:'));
+           @{$corr{cc}} = getparsedaddrs($entity->head->get('Cc'));
            # add correspondents if necessary
            my @cors;
            for my $type (keys %corr) {
                for my $addr (@{$corr{$type}}) {
+                    my $cor = $s->resultset('Correspondent')->
+                        get_correspondent_id($addr);
+                    next unless defined $cor;
                    push @cors,
-                       {correspondent => $s->resultset('Correspondent')->
-                        get_correspondent_id($addr),
+                       {correspondent => $cor,
                         correspondent_type => $type,
                        };
                }
@@ -408,12 +416,13 @@ sub load_bug_log {
            $m->update();
            $s->txn_do(sub {
                           $m->message_correspondents()->delete();
-                          $m->add_to_message_correspondents(@cors);
+                          $m->add_to_message_correspondents(@cors) if
+                               @cors;
                       }
                      );
        }
        my $recv;
-       if ($entity->head->get('Received:',0)
+       if ($entity->head->get('Received',0)
            =~ /via spool by (\S+)/) {
            $recv = $s->resultset('Correspondent')->
                get_correspondent_id($1);