]> ruin.nu Git - ndwebbie.git/commitdiff
Lock target before claiming
authorMichael Andreen <harv@ruin.nu>
Thu, 10 Apr 2008 19:15:33 +0000 (21:15 +0200)
committerMichael Andreen <harv@ruin.nu>
Thu, 10 Apr 2008 19:15:33 +0000 (21:15 +0200)
NDWeb/Pages/Raids.pm

index ac1f6b9f936cb2127ef0b30eef885724fdf48b9d..2382a8fed360ac0503ca26f7da1123f6433afc2f 100644 (file)
@@ -119,13 +119,18 @@ sub render_body {
                my $target = param('target');
                my $wave = param('wave');
 
-               my $findtarget = $DBH->prepare("SELECT rt.id FROM raid_targets rt NATURAL JOIN raid_access ra NATURAL JOIN groupmembers where uid = ? AND id = ?");
+               $DBH->begin_work;
+               my $findtarget = $DBH->prepare(q{SELECT rt.id FROM raid_targets rt 
+                       NATURAL JOIN raid_access ra NATURAL JOIN groupmembers 
+                       WHERE uid = ? AND id = ?
+                       FOR UPDATE
+               });
                my $result = $DBH->selectrow_array($findtarget,undef,$ND::UID,$target);
                if ($result != $target){
+                       $DBH->rollback;
                        return $self->noAccess; 
                }
 
-               $DBH->begin_work;
                if (param('cmd') eq 'Claim'){
                        my $claims = $DBH->prepare(qq{SELECT username FROM raid_claims NATURAL JOIN users WHERE target = ? AND wave = ?});
                        $claims->execute($target,$wave);