Q => 'quiet',
F => 'forwarded',
D => 'done',
- S => 'submitter',
+ U => 'submitter',
L => 'list',
);
my $valid_codeletters = join('',keys %baddress);
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)",
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);
}
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);
transcript => $transcript,
debug => 0,
ok => \$ok,
+ replyto => $replyto,
);
if ($terminate_control) {
last;