diff options
author | ivan <ivan> | 2003-09-25 10:27:11 +0000 |
---|---|---|
committer | ivan <ivan> | 2003-09-25 10:27:11 +0000 |
commit | daeb70ea28f8a3e0db500f8a0e107221f4542d30 (patch) | |
tree | 6c178d683d612c81a7cf42966011bc930bac5247 /FS/bin/freeside-selfservice-server | |
parent | d1154acfa526fa01d308be5d47a071643cfda5ea (diff) |
freebsd portability fixes
Diffstat (limited to 'FS/bin/freeside-selfservice-server')
-rw-r--r-- | FS/bin/freeside-selfservice-server | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/FS/bin/freeside-selfservice-server b/FS/bin/freeside-selfservice-server index 264cbc56d..6cfafda58 100644 --- a/FS/bin/freeside-selfservice-server +++ b/FS/bin/freeside-selfservice-server @@ -9,6 +9,7 @@ use strict; use vars qw( $Debug %kids $kids $max_kids $shutdown $log_file $ssh_pid ); +use subs qw( lock_write unlock_write ); use Fcntl qw(:flock); use POSIX qw(:sys_wait_h setsid); use IO::Handle; @@ -35,6 +36,9 @@ my $machine = shift or die &usage; my $pid_file = "/var/run/freeside-selfservice-server.$user.pid"; #my $pid_file = "/var/run/freeside-selfservice-server.$user.pid"; $FS::UID::datasrc not posible, but should include machine name at least, hmm +my $lock_file = "/usr/local/etc/freeside/selfservice.$machine.writelock"; +open(LOCKFILE,">$lock_file") or die "can't open $lock_file: $!"; + &init($user); my $conf = new FS::Conf; @@ -109,10 +113,10 @@ while (1) { $rv->{_token} = $packet->{_token}; #identifier warn "sending response\n" if $Debug; - flock($writer, LOCK_EX) or die "FATAL: can't lock write stream: $!"; + lock_write; nstore_fd($rv, $writer) or die "FATAL: can't send response: $!"; $writer->flush or die "FATAL: can't flush: $!"; - flock($writer, LOCK_UN) or die "WARNING: can't release write lock: $!"; + unlock_write; warn "child exiting\n" if $Debug; exit; #end-of-kid @@ -229,7 +233,23 @@ sub _do_logmsg { close $log; } +sub lock_write { + #broken on freebsd? + #flock($writer, LOCK_EX) or die "FATAL: can't lock write stream: $!"; + + flock(LOCKFILE, LOCK_EX) or die "FATAL: can't lock $lock_file: $!"; + +} + +sub unlock_write { + #broken on freebsd? + #flock($writer, LOCK_UN) or die "WARNING: can't release write lock: $!"; + + flock(LOCKFILE, LOCK_UN) or die "FATAL: can't unlock $lock_file: $!"; + +} + sub usage { - die "Usage:\n\n fs_signup_server user machine\n"; + die "Usage:\n\n freeside-selfservice-server user machine\n"; } |