X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=1914ab3179e53e54365c685a05b1022c95937f05;hb=22e5a371c4388da2f15179739e7447fec3e4ec0c;hp=850b81d6f108da40bf7194e937438aa03e7cf402;hpb=3ba4a53a0fae7b6135ee9b8cd0ab4bbe352b4bdc;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index 850b81d6..1914ab31 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -98,7 +98,7 @@ sub rec_socket cease(1); } if (defined $msg) { - my ($sort, $call, $line) = $msg =~ /^(\w)(\S+)\|(.*)$/; + my ($sort, $call, $line) = $msg =~ /^(\w)([A-Z0-9\-]+)\|(.*)$/; if ($sort eq 'D') { my $snl = $mynl; @@ -163,7 +163,9 @@ sub rec_stdin # $prbuf =~ s/\r/\\r/; # $prbuf =~ s/\n/\\n/; # print "sys: $r ($prbuf)\n"; - if ($r > 0) { + if (!defined $r || $r == 0) { + cease(1); + } elsif ($r > 0) { if ($mode) { $buf =~ s/\r/\n/og if $mode == 1; $buf =~ s/\r\n/\n/og if $mode == 2; @@ -189,9 +191,7 @@ sub rec_stdin } else { $conn->send_later("I$call|$buf"); } - } elsif ($r == 0) { - cease(1); - } + } $lasttime = time; } @@ -225,6 +225,8 @@ sub doconnect $rfh = new IO::File; $wfh = new IO::File; $pid = open2($rfh, $wfh, "$line") or die "can't do $line $!"; + die "no receive channel $!" unless $rfh; + die "no transmit channel $!" unless $wfh; dbg('connect', "got pid $pid"); $wfh->autoflush(1); } else { @@ -325,9 +327,9 @@ $waitedpid = 0; # deal with args # -$call = uc shift @ARGV; +$call = uc shift @ARGV if @ARGV; $call = uc $myalias if !$call; -$connsort = lc shift @ARGV; +$connsort = lc shift @ARGV if @ARGV; $connsort = 'local' if !$connsort; $loginreq = $call eq 'LOGIN'; @@ -474,7 +476,7 @@ if (! $conn) { open IN, "$data/offline" or die; while () { s/\n/\r/og if $mode == 1; - print $stdout; + print $stdout $_; } close IN; } else {