X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fclient.pl;h=1b6757b48c27c09c63ea7f19f1a4167a50c014d8;hb=9995de8c1bfcb9ed980ab0ef12e4d66564c04105;hp=91d4add615bf049cc2fbaa3380c0c99437878a83;hpb=f7ce6f45eae627c1368ffea0e1e56e84fec676be;p=spider.git diff --git a/perl/client.pl b/perl/client.pl index 91d4add6..1b6757b4 100755 --- a/perl/client.pl +++ b/perl/client.pl @@ -102,12 +102,13 @@ sub rec_socket cease(1); } if (defined $msg) { - my ($sort, $call, $line) = $msg =~ /^(\w)([A-Z0-9\-]+)\|(.*)$/; + my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; if ($sort eq 'D') { my $snl = $mynl; my $newsavenl = ""; $snl = "" if $mode == 0; + $snl = "\r\n" if $mode == 2; if ($mode == 2 && $line =~ />$/) { $newsavenl = $snl; $snl = ' '; @@ -177,8 +178,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 +275,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) {