summaryrefslogtreecommitdiffstats
path: root/Bugzilla/Flag.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/Flag.pm')
-rw-r--r--Bugzilla/Flag.pm12
1 files changed, 10 insertions, 2 deletions
diff --git a/Bugzilla/Flag.pm b/Bugzilla/Flag.pm
index 19ecf7fa9..a6914a661 100644
--- a/Bugzilla/Flag.pm
+++ b/Bugzilla/Flag.pm
@@ -763,6 +763,14 @@ sub modify {
notify($flag, $bug, $attachment);
}
elsif ($status eq '?') {
+ # If the one doing the change is the requestee, then this means he doesn't
+ # want to reply to the request and he simply reassigns the request to
+ # someone else. In this case, we keep the requester unaltered.
+ my $new_setter = $setter;
+ if ($flag->requestee && $flag->requestee->id == $setter->id) {
+ $new_setter = $flag->setter;
+ }
+
# Get the requestee, if any.
my $requestee_id;
if ($requestee_email) {
@@ -782,11 +790,11 @@ sub modify {
SET setter_id = ?, requestee_id = ?,
status = ?, modification_date = ?
WHERE id = ?',
- undef, ($setter->id, $requestee_id, $status,
+ undef, ($new_setter->id, $requestee_id, $status,
$timestamp, $flag->id));
# Now update the flag object with its new values.
- $flag->{'setter'} = $setter;
+ $flag->{'setter'} = $new_setter;
$flag->{'status'} = $status;
# Send an email notifying the relevant parties about the request.