]> git.donarmstrong.com Git - debbugs.git/blobdiff - scripts/process
Apply fix for ! in owner et al; fixes #681853 Thanks to jwilk for reporting
[debbugs.git] / scripts / process
index 9a0eb65009cd334ceea3288019ad00dfa068a69a..e5759586a6ed25cb38a87c033661744b67be0407 100755 (executable)
@@ -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);
@@ -275,12 +275,14 @@ $subject =~ s/^Re:\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 +410,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);
@@ -956,6 +960,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);
@@ -1011,6 +1017,7 @@ if (@control_bits) {
                                 transcript => $transcript,
                                 debug => 0,
                                 ok => \$ok,
+                                replyto => $replyto,
                                );
                if ($terminate_control) {
                    last;