summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivan <ivan>2004-09-15 08:45:06 +0000
committerivan <ivan>2004-09-15 08:45:06 +0000
commitb6b73450dada235f94f7773a53079417dd219a4c (patch)
treeb2c7640cd2395c20e1380e5c06beb1ee4abd76e9
parent73b848b45d387a3ca03f9ed64fd48646dd52352d (diff)
obtain a new descriptor for the lock in kids, this should fix locking problems
-rw-r--r--fs_selfservice/FS-SelfService/freeside-selfservice-clientd4
1 files changed, 4 insertions, 0 deletions
diff --git a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd b/fs_selfservice/FS-SelfService/freeside-selfservice-clientd
index 5a058381d..ededfa6e9 100644
--- a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd
+++ b/fs_selfservice/FS-SelfService/freeside-selfservice-clientd
@@ -43,6 +43,7 @@ $SIG{__WARN__} = \&_logmsg;
warn "Creating $lock_file\n" if $Debug;
open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!";
+close LOCKFILE;
warn "Creating $socket\n" if $Debug;
my $uaddr = sockaddr_un($socket);
@@ -256,6 +257,9 @@ sub lock_write {
#broken on freebsd?
#flock(STDOUT, LOCK_EX) or die "FATAL: can't lock write stream: $!";
+ #open a new one for each kid to get a unique lock
+ open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!";
+
flock(LOCKFILE, LOCK_EX) or die "FATAL: can't lock $lock_file: $!";
}