@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
$SIG{'TERM'} = 'IGNORE';
$SIG{'INT'} = 'IGNORE';
+ DXUser::sync;
+
eval {
Local::finish(); # end local processing
};
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';
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{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();
#open(DB::OUT, "|tee /tmp/aa");
-$SIG{PIPE} = sub {
- #$DB::single = 1;
- dbg('err', "Broken PIPE signal received");
-};
-
for (;;) {
my $timenow;
# $DB::trace = 1;
DXConnect::process();
DXMsg::process();
DXDb::process();
+ DXUser::process();
eval {
Local::process(); # do any localised processing
};