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;
# $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;
} else {
$conn->send_later("I$call|$buf");
}
- } elsif ($r == 0) {
- cease(1);
- }
+ }
$lasttime = time;
}
$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 {
for (;;) {
if ($csort eq 'telnet') {
$line = $sock->get();
+ cease(11) unless $line; # the socket has gone away?
$line =~ s/\r\n/\n/og;
chomp;
} elsif ($csort eq 'ax25' || $csort eq 'prog') {