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";  }  | 
