X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=fs_selfservice%2FFS-SelfService%2Ffreeside-selfservice-clientd;h=bdc8e15475ddf2a6286e8506e74571f51b539671;hb=3c4456c1de9701d93b64fcbadcfaca598a0347d8;hp=5a058381d4ff6954a006fb98b5cd9d6246af65eb;hpb=07fd88f7c0cd757eb2f8e635b71acebe6a944602;p=freeside.git diff --git a/fs_selfservice/FS-SelfService/freeside-selfservice-clientd b/fs_selfservice/FS-SelfService/freeside-selfservice-clientd index 5a058381d..bdc8e1547 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); @@ -56,8 +57,9 @@ if ( -e $pid_file ) { open(PIDFILE,"<$pid_file"); my $old_pid = ; close PIDFILE; - $old_pid =~ /^(\d+)$/; - kill 'TERM', $1; + if ( $old_pid =~ /^(\d+)$/ ) { + kill 'TERM', $1; + } } open(PIDFILE,">$pid_file"); print PIDFILE "$$\n"; @@ -256,6 +258,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: $!"; }