From 92bda853b5c48a8cd4a4bdaa6272ad21c51cfe86 Mon Sep 17 00:00:00 2001 From: Cassio de Campos Date: Wed, 1 Nov 2017 18:13:51 +0000 Subject: avoid double transact --- src/frun.php | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/frun.php') diff --git a/src/frun.php b/src/frun.php index f9b9c23..ed7f1b4 100644 --- a/src/frun.php +++ b/src/frun.php @@ -289,18 +289,21 @@ function DBRunGiveUp($number,$site,$contest,$usernumber,$usersite) { "newstatus=$newstatus", 3); return true; } -function DBRunDelete($number,$site,$contest,$user,$usersite) { - $c = DBConnect(); - DBExec($c, "begin work", "DBRunDelete(transaction)"); +function DBRunDelete($number,$site,$contest,$user,$usersite,$cc=null) { + if($cc == null) { + $c = DBConnect(); + DBExec($c, "begin work", "DBRunDelete(transaction)"); + } else $c = $cc; $sql = "select * from runtable as r where r.contestnumber=$contest and " . "r.runsitenumber=$site and r.runnumber=$number"; $r = DBExec ($c, $sql . " for update", "DBRunDelete(get run for update)"); $n = DBnlines($r); if ($n != 1) { - DBExec($c, "rollback work", "DBRunDelete(rollback)"); - LogLevel("Unable to delete a run. ". - "(run=$number, site=$site, contest=$contest)",1); - return false; + if($cc == null) + DBExec($c, "rollback work", "DBRunDelete(rollback)"); + LogLevel("Unable to delete a run. ". + "(run=$number, site=$site, contest=$contest)",1); + return false; } $temp = DBRow($r, 0); @@ -320,8 +323,8 @@ function DBRunDelete($number,$site,$contest,$user,$usersite) { ": " . $p[0]["fullname"]), "", "", "t", $p[0]["color"], $p[0]["colorname"], $c); } } - - DBExec($c, "commit work", "DBRunDelete(commit)"); + if($cc == null) + DBExec($c, "commit work", "DBRunDelete(commit)"); LOGLevel("Run deleted (run=$number, site=$site, contest=$contest, user=$user(site=$usersite)).", 3); return true; } -- cgit v1.2.3