X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Fprocess;h=9fb2c2f52f172633b9c7b1822956a8213e7b8607;hb=0bbbb98d698f232436ed5061487c81a9a732b5da;hp=4236f6b4ccbdece729d1f8488c8cc0bf4afc204e;hpb=29c59ac17e0457ce9d429a7282a5d22d383816d5;p=debbugs.git diff --git a/scripts/process b/scripts/process index 4236f6b..9fb2c2f 100755 --- a/scripts/process +++ b/scripts/process @@ -84,7 +84,7 @@ my %baddress = (B => 'submit', Q => 'quiet', F => 'forwarded', D => 'done', - S => 'submitter', + U => 'submitter', L => 'list', ); my $valid_codeletters = join('',keys %baddress); @@ -271,16 +271,22 @@ if (!defined($header{'subject'})) } my $ref=-1; -$subject =~ s/^Re:\s*//i; $_= $subject."\n"; +# remove Re: from the subject line +$subject =~ s/^Re:\s*//i; +# remove remaining mailing list name markers from the subject line +$subject =~ s/^\[.*\]\s*//i; +$_= $subject."\n"; if (not defined $tryref and m/^Bug ?\#(\d+)\D/i) { $tryref = $1 if $1 > 0; } +my $locks = 0; my $data; if (defined $tryref) { - my $bfound; - ($bfound, $data)= &lockreadbugmerge($tryref); - if ($bfound and not $data->{archived}) { - $ref= $tryref; + my $locks_recv; + ($locks_recv, $data)= &lockreadbugmerge($tryref); + $locks += $locks_recv; + if ($locks_recv and not $data->{archived}) { + $ref= $tryref; } else { &sendmessage(create_mime_message( [From => "$gMaintainerEmail ($gProject $gBug Tracking System)", @@ -408,8 +414,10 @@ if ($codeletter eq 'D' || $codeletter eq 'F') for $ref (@process) { if ($ref != $orgref) { &unfilelock; + $locks--; $data = &lockreadbug($ref) || die "huh ? $ref from $orgref out of ".join(' ',@process); + $locks++; } $data->{done}= $set_done if defined($set_done); $data->{forwarded}= $set_forwarded if defined($set_forwarded); @@ -439,8 +447,16 @@ if ($codeletter eq 'D' || $codeletter eq 'F') # Add bug mailing list to $generalbcc as appropriate # This array is used to specify bcc in the cases where we're using create_mime_message. - my @generalbcc = (@generalcc,@addsrcaddrs,"bugs=$ref\@$gListDomain"); - my $generalbcc = join(', ', $generalcc, @addsrcaddrs,"bugs=$ref\@$gListDomain"); + my @generalbcc = @generalcc; + my $generalbcc = $generalcc; + if (defined $config{subscription_domain} and length $config{subscription_domain}) { + my @generalbcc = (@generalbcc, @addsrcaddrs); + my $generalbcc = join(', ', $generalbcc, @addsrcaddrs); + } + if (defined $config{bug_subscription_domain} and length $config{bug_subscription_domain}) { + my @generalbcc = (@generalbcc, "bugs=$ref\@$config{bug_subscription_domain}"); + my $generalbcc = join(', ', $generalbcc, "bugs=$ref\@$config{bug_subscription_domain}"); + } $generalbcc =~ s/\s+\n\s+/ /g; $generalbcc =~ s/^\s+/ /; $generalbcc =~ s/\s+$//; if (length $generalbcc) {$generalbcc = "Bcc: $generalbcc\n"}; @@ -713,7 +729,9 @@ if (defined $gStrongList and isstrongseverity($data->{severity})) { } # Send mail to the per bug list subscription too -push @bccs, "bugs=$ref\@$gListDomain"; +if (defined $config{bug_subscription_domain} and length $config{bug_subscription_domain}) { + push @bccs, "bugs=$ref\@$config{bug_subscription_domain}"; +} if (defined $pheader{source}) { # Prefix source versions with the name of the source package. They @@ -956,6 +974,8 @@ if (not exists $header{'x-debbugs-no-ack'} and } appendlog($ref,$msg); +# unlock the locks we have received +while ($locks--) {unfilelock();} ## handle control messages at this point, immediately before finishing my %clonebugs = (-1 => $ref); @@ -990,7 +1010,6 @@ if (@control_bits) { print {$transcript} fill_template('mail/excluded_from_control'); print {$transcript} "Stopping processing here.\n\n"; } else { - my %clonebugs = (); for my $control_bit (@control_bits) { $control_bit =~ s/\xef\xbb\xbf//g; next unless $control_bit =~ m/\S/; @@ -1012,6 +1031,7 @@ if (@control_bits) { transcript => $transcript, debug => 0, ok => \$ok, + replyto => $replyto, ); if ($terminate_control) { last; @@ -1250,15 +1270,15 @@ sub checkmaintainers { $p =~ /((?:src:)?[a-z0-9.+-]+)/; $p = $1; next unless defined $p; - if (defined $gSubscriptionDomain) { + if (defined $config{subscription_domain} and length $config{subscription_domain}) { my @source = binary_to_source(binary => $p, source_only => 1, ); if (@source) { push @addsrcaddrs, - map {"$_\@$gSubscriptionDomain"} @source; + map {"$_\@$config{subscription_domain}"} @source; } else { - push @addsrcaddrs, "$p\@$gSubscriptionDomain"; + push @addsrcaddrs, "$p\@$config{subscription_domain}"; } } # this is utter hackery until we switch to Debbugs::Recipients