freeside/FS/bin freeside-selfservice-server,1.11,1.12

ivan ivan at pouncequick.420.am
Mon Sep 13 23:47:50 PDT 2004


Update of /home/cvs/cvsroot/freeside/FS/bin
In directory pouncequick:/tmp/cvs-serv20735/FS/bin

Modified Files:
	freeside-selfservice-server 
Log Message:
selfservice:
- server: don't reconnect again if we've already been signalled to shutdown
- server: add kid reaping to shutdown sequence
- server: add another optional logging level to response sending
- server: acquire write mutex for keepalives

Index: freeside-selfservice-server
===================================================================
RCS file: /home/cvs/cvsroot/freeside/FS/bin/freeside-selfservice-server,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- freeside-selfservice-server	6 Sep 2004 12:44:17 -0000	1.11
+++ freeside-selfservice-server	14 Sep 2004 06:47:46 -0000	1.12
@@ -25,8 +25,8 @@
 use FS::cust_bill;
 use FS::cust_pkg;
 
-$Debug = 1; # >= 2 will log packet contents, including potentially compromising
-            # information
+$Debug = 1; # 2 will turn on more logging
+            # 3 will log packet contents, including passwords
 
 $shutdown = 0;
 $max_kids = '10'; #?
@@ -73,7 +73,9 @@
       &shutdown if $shutdown;
       if ( $keepalives && $keepalive_count++ > 10 ) {
         $keepalive_count = 0;
+        lock_write;
         nstore_fd( { _token => '_keepalive' }, $writer );
+        unlock_write;
       }
       next;
     }
@@ -96,7 +98,7 @@
     }
     warn "packet received\n".
          join('', map { " $_=>$packet->{$_}\n" } keys %$packet )
-      if $Debug > 1;
+      if $Debug > 2;
 
     if ( $packet->{_packet} eq '_enable_keepalive' ) {
       warn "enabling keep alives\n" if $Debug;
@@ -136,8 +138,8 @@
       }
       $rv->{_token} = $packet->{_token}; #identifier
 
-      warn "sending response\n" if $Debug;
       lock_write;
+      warn "sending response\n" if $Debug;
       nstore_fd($rv, $writer) or die "FATAL: can't send response: $!";
       $writer->flush or die "FATAL: can't flush: $!";
       unlock_write;
@@ -148,6 +150,7 @@
 
   }
 
+  &shutdown if $shutdown;
   warn "connection lost, reconnecting\n" if $Debug;
   sleep 3;
 
@@ -229,10 +232,12 @@
 }
 
 sub shutdown {
+  &reap_kids;
   my $wait = 12; #wait up to 1 minute
   while ( $kids > 0 && $wait-- ) {
     warn "waiting for $kids children to terminate";
     sleep 5;
+    &reap_kids;
   }
   warn "abandoning $kids children" if $kids;
   kill 'TERM', $ssh_pid if $ssh_pid;
@@ -261,6 +266,8 @@
 }
 
 sub lock_write {
+  warn "locking $lock_file mutex for write to write stream\n" if $Debug > 1;
+
   #broken on freebsd?
   #flock($writer, LOCK_EX) or die "FATAL: can't lock write stream: $!";
 
@@ -269,6 +276,8 @@
 }
 
 sub unlock_write {
+  warn "unlocking $lock_file mutex\n" if $Debug > 1;
+
   #broken on freebsd?
   #flock($writer, LOCK_UN) or die "WARNING: can't release write lock: $!";
 




More information about the freeside-commits mailing list