X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=66c7b0927337d88443097fb62b2c1daa1cc5dce9;hb=502f900651a46b96008028945616a3b610d6cc7a;hp=f59c5847c09be00f2cb481be4387331899a2a92d;hpb=88665a2bed3b9ec9e97237938a95a045b2a21bb4;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index f59c5847..66c7b092 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -51,10 +51,10 @@ use IPC::Open2; sub cease { my $sendz = shift; - if ($conn && $sendz) { - $conn->send_now("Z$call|bye..."); - sleep(1); - } +# if ($conn && $sendz) { +# $conn->send_now("Z$call|bye..."); +# sleep(1); +# } $stdout->flush if $stdout; if ($pid) { dbg('connect', "killing $pid"); @@ -99,7 +99,7 @@ sub rec_socket { my ($con, $msg, $err) = @_; if (defined $err && $err) { - cease(1); + cease(0); } if (defined $msg) { my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; @@ -108,6 +108,7 @@ sub rec_socket my $snl = $mynl; my $newsavenl = ""; $snl = "" if $mode == 0; + $snl = "\r\n" if $mode == 2; if ($mode == 2 && $line =~ />$/) { $newsavenl = $snl; $snl = ' '; @@ -154,6 +155,8 @@ sub rec_socket # any other sorts that might happen are silently ignored. # ****************************************************** # ****************************************************** + } else { + cease(0); } $lasttime = time; } @@ -177,8 +180,9 @@ sub rec_stdin cease(1); } elsif ($r > 0) { if ($mode) { - $buf =~ s/\r/\n/og if $mode == 1; - $buf =~ s/\r\n/\n/og if $mode == 2; + $buf =~ s/\r/\n/g if $mode == 1; + $buf =~ s/[\r\x00]//g if $mode == 2; + $dangle = !($buf =~ /\n$/); if ($buf eq "\n") { @lines = (" "); @@ -273,16 +277,21 @@ sub dochat if ($csort eq 'telnet') { $line = $sock->get(); cease(11) unless $line; # the socket has gone away? - $line =~ s/\r\n/\n/og; + if (length $line == 0) { + dbg('connect', "received 0 length line, aborting..."); + cease(11); + } + $line =~ s/\r//g; chomp; } elsif ($csort eq 'ax25' || $csort eq 'prog') { local $/ = "\r"; $line = <$rfh>; - $line =~ s/\r//og; - } - if (length $line == 0) { - dbg('connect', "received 0 length line, aborting..."); - cease(11); + if (length $line == 0) { + dbg('connect', "received 0 length line, aborting..."); + cease(11); + } + $line =~ s/\r/\n/g; + chomp; } dbg('connect', "received \"$line\""); if ($abort && $line =~ /$abort/i) {