From 54a039fbd102e8df9ebf8a35925a1ab807973cb7 Mon Sep 17 00:00:00 2001 From: hunter-nl Date: Sun, 5 May 2019 13:15:34 +0200 Subject: [PATCH] Fix: Processing result of running imapsync command There was a possibility the status is_running never set back to 0. Also the unlock command could be executed twice. --- data/Dockerfiles/dovecot/imapsync_cron.pl | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/data/Dockerfiles/dovecot/imapsync_cron.pl b/data/Dockerfiles/dovecot/imapsync_cron.pl index cc4465cc..d4799421 100644 --- a/data/Dockerfiles/dovecot/imapsync_cron.pl +++ b/data/Dockerfiles/dovecot/imapsync_cron.pl @@ -154,17 +154,21 @@ while ($row = $sth->fetchrow_arrayref()) { run [@$generated_cmds, @$custom_params_ref], '&>', \my $stdout; - $update = $dbh->prepare("UPDATE imapsync SET returned_text = ?, last_run = NOW(), is_running = 0 WHERE id = ?"); + $update = $dbh->prepare("UPDATE imapsync SET returned_text = ? WHERE id = ?"); $update->bind_param( 1, ${stdout} ); $update->bind_param( 2, ${id} ); $update->execute(); } catch { - $update = $dbh->prepare("UPDATE imapsync SET returned_text = 'Could not start or finish imapsync', last_run = NOW(), is_running = 0 WHERE id = ?"); + $update = $dbh->prepare("UPDATE imapsync SET returned_text = 'Could not start or finish imapsync' WHERE id = ?"); + $update->bind_param( 1, ${id} ); + $update->execute(); + } finally { + $update = $dbh->prepare("UPDATE imapsync SET last_run = NOW(), is_running = 0 WHERE id = ?"); $update->bind_param( 1, ${id} ); $update->execute(); - $lockmgr->unlock($lock_file); }; + } $sth->finish();