encryption fixes from huntsberg & jayce
[freeside.git] / FS / bin / freeside-selfservice-server
index c73349a..0ba97f6 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/perl -w
 
 use strict;
-use vars qw( $Debug %kids $kids $max_kids $ssh_pid $keepalives );
+use vars qw( $Debug %kids $kids $max_kids $ssh_pid %old_ssh_pid $keepalives );
 use subs qw( lock_write unlock_write myshutdown usage );
 use Fcntl qw(:flock);
 use POSIX qw(:sys_wait_h);
@@ -102,6 +102,7 @@ while (1) {
       if ( $ssh_pid ) {
         warn "sending TERM signal to ssh process $ssh_pid\n" if $Debug;
         kill 'TERM', $ssh_pid;
+        $old_ssh_pid{$ssh_pid} = 1;
         $ssh_pid = 0;
       }
       last;
@@ -133,11 +134,11 @@ while (1) {
     } else { #kid time
 
       ##get new db handle
-      #$FS::UID::dbh->{InactiveDestroy} = 1;
-      #forksuidsetup($user);
+      $FS::UID::dbh->{InactiveDestroy} = 1;
+      forksuidsetup($user);
 
       #get db handle
-      adminsuidsetup($user);
+      #adminsuidsetup($user);
 
       my $type = $packet->{_packet};
       warn "calling $type handler\n" if $Debug; 
@@ -180,6 +181,10 @@ sub reap_kids {
       delete $kids{$kid};
     }
   }
+
+  foreach my $pid ( keys %old_ssh_pid ) {
+    waitpid($pid, WNOHANG) and delete $old_ssh_pid{$pid};
+  }
   #warn "done reaping\n";
 }