use Msg;
use DXVars;
use DXDebug;
+use Net::Telnet qw(TELOPT_ECHO);
use IO::File;
use IO::Socket;
use IPC::Open2;
-use Net::Telnet qw(TELOPT_ECHO);
use Carp qw{cluck};
# cease communications
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;
$port = 23 if !$port;
# if ($port == 23) {
+
$sock = new Net::Telnet (Timeout => $timeout, Port => $port);
$sock->option_callback(\&optioncb);
$sock->output_record_separator('');
- $sock->option_log('option_log');
- $sock->dump_log('dump');
- $sock->option_accept(Wont => TELOPT_ECHO);
+# $sock->option_log('option_log');
+# $sock->dump_log('dump');
+ $sock->option_accept(Dont => TELOPT_ECHO, Wont => TELOPT_ECHO);
$sock->open($host) or die "Can't connect to $host port $port $!";
# } else {
# $sock = IO::Socket::INET->new(PeerAddr => "$host:$port", Proto => 'tcp')
$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') {