From: Jonathan McDowell <noodles@earth.li>
Date: Mon, 31 May 2004 23:48:11 +0000 (+0000)
Subject: cscvs to tla changeset 116
X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/commitdiff_plain/7f1c2d9ec737a90d4d216f59ccb8b93f9054c472

cscvs to tla changeset 116
Author: noodles
Date: 2004/01/04 18:48:37
Add a lock around the call to onak so that we've only got one copy of onak-mail
running it at once.
---

diff --git a/onak-mail.pl b/onak-mail.pl
index 1c3647c..e5c0d04 100755
--- a/onak-mail.pl
+++ b/onak-mail.pl
@@ -6,10 +6,11 @@
 # Copyright 2002 Project Purple
 # Released under the GPL.
 #
-# $Id: onak-mail.pl,v 1.8 2003/10/11 22:17:17 noodles Exp $
+# $Id: onak-mail.pl,v 1.9 2004/01/04 18:48:37 noodles Exp $
 #
 
 use strict;
+use Fcntl ':flock';
 use IPC::Open3;
 
 my %config;
@@ -38,6 +39,8 @@ sub readconfig {
 			$config{'mta'} = $1;
 		} elsif (/^pks_bin_dir (.*)/) {
 			$config{'pks_bin_dir'} = $1;
+		} elsif (/^db_dir (.*)/) {
+			$config{'db_dir'} = $1;
 		} elsif (/^syncsite (.*)/) {
 			push @{$config{'syncsites'}}, $1;
 		}
@@ -59,6 +62,10 @@ sub submitupdate {
 	my @data = @_;
 	my (@errors, @mergedata);
 
+	open(LOCKFILE, '>'.$config{'db_dir'}.'/onak-mail.lck');
+	flock(LOCKFILE, LOCK_EX);
+	print LOCKFILE "$$";
+
 	open3(\*MERGEIN, \*MERGEOUT, \*MERGEERR,
 		$config{'pks_bin_dir'}."/onak", "-u", "add");
 
@@ -69,6 +76,9 @@ sub submitupdate {
 	@errors = <MERGEERR>;
 	close MERGEERR;
 
+	flock(LOCKFILE, LOCK_UN);
+	close(LOCKFILE);
+
 	return @mergedata;
 }