also don't leak processes, like fs_passwdd
authorivan <ivan>
Wed, 17 Apr 2002 07:32:51 +0000 (07:32 +0000)
committerivan <ivan>
Wed, 17 Apr 2002 07:32:51 +0000 (07:32 +0000)
fs_signup/FS-SignupClient/fs_signupd

index e764f32..85bd68a 100755 (executable)
@@ -13,7 +13,8 @@ use vars qw( $Debug );
 
 $Debug = 1;
 
-my($fs_signupd_socket)="/usr/local/freeside/fs_signupd_socket";
+my $fs_signupd_socket = "/usr/local/freeside/fs_signupd_socket";
+my $pid_file = "$fs_signupd_socket.pid";
 
 $ENV{'PATH'} ='/usr/local/bin:/usr/bin:/usr/ucb:/bin';
 $ENV{'SHELL'} = '/bin/sh';
@@ -35,6 +36,18 @@ unlink($fs_signupd_socket);
 bind(Server, $uaddr) or die "bind: $!";
 listen(Server,SOMAXCONN) or die "listen: $!";
 
+if ( -e $pid_file ) {
+  open(PIDFILE,"<$pid_file");
+  #chomp( my $old_pid = <PIDFILE> );
+  my $old_pid = <PIDFILE>;
+  close PIDFILE;
+  $old_pid =~ /^(\d+)$/;
+  kill 'TERM', $1;
+}
+open(PIDFILE,">$pid_file");
+print PIDFILE "$$\n";
+close PIDFILE;
+
 warn "[fs_signupd] Entering main loop...\n" if $Debug;
 my $paddr;
 for ( ; $paddr = accept(Client,Server); close Client) {