2. Add full individual checking for all PC protocol fields in all messages
[spider.git] / perl / cluster.pl
index 6ed864b13578ce5bf175310b92351128110ef4bc..ec1030e88096a659e1b4480c7bf78572a2ac874a 100755 (executable)
@@ -71,7 +71,7 @@ package main;
 
 @inqueue = ();                                 # the main input queue, an array of hashes
 $systime = 0;                                  # the time now (in seconds)
-$version = "1.43";                             # the version no of the software
+$version = "1.44";                             # the version no of the software
 $starttime = 0;                 # the starting time of the cluster   
 $lockfn = "cluster.lock";       # lock file name
 @outstanding_connects = ();     # list of outstanding connects
@@ -253,11 +253,6 @@ sub process_inqueue
        my ($sort, $call, $line) = DXChannel::decode_input($dxchan, $data);
        return unless defined $sort;
        
-       # translate any crappy characters into hex characters 
-       if ($line =~ /[\x00-\x06\x08\x0a-\x1f\x7f-\xff]/o) {
-               $line =~ s/([\x00-\x1f\x7f-\xff])/uc sprintf("%%%02x",ord($1))/eg;
-       }
-
        # do the really sexy console interface bit! (Who is going to do the TK interface then?)
        dbg('chan', "<- $sort $call $line\n") unless $sort eq 'D';
 
@@ -327,17 +322,23 @@ dbg('err', "starting listener ...");
 Msg->new_server("$clusteraddr", $clusterport, \&login);
 
 # prime some signals
-$SIG{'INT'} = \&cease;
-$SIG{'TERM'} = \&cease;
-$SIG{'HUP'} = 'IGNORE';
-$SIG{'CHLD'} = \&reap;
+$SIG{INT} = \&cease;
+$SIG{TERM} = \&cease;
+$SIG{HUP} = 'IGNORE';
+$SIG{CHLD} = \&reap;
 
 $SIG{PIPE} = sub {     dbg('err', "Broken PIPE signal received"); };
 $SIG{IO} = sub {       dbg('err', "SIGIO received"); };
-$SIG{ILL} = $SIG{FPE} = 
-       $SIG{SEGV} = $SIG{USR1} = $SIG{USR2} =
-       $SIG{BUS} = sub { my $sig = shift;      DXDebug::confess("Caught signal $sig");  };
-
+$SIG{WINCH} = $SIG{STOP} = $SIG{CONT} = 'IGNORE';
+$SIG{KILL} = 'DEFAULT';     # as if it matters....
+
+# catch the rest with a hopeful message
+for (keys %SIG) {
+       if (!$SIG{$_}) {
+#              dbg('chan', "Catching SIG $_");
+               $SIG{$_} = sub { my $sig = shift;       DXDebug::confess("Caught signal $sig");  }; 
+       }
+}
 
 # read in system messages
 DXM->init();