} elsif ($sort eq 'M') {
$mode = $line; # set new mode from cluster
setmode();
+ } elsif ($sort eq 'E') {
+ if ($sort eq 'telnet') {
+ $mode = $line; # set echo mode from cluster
+ my $term = POSIX::Termios->new;
+ $term->getattr(fileno($sock));
+ $term->setflag( &POSIX::ISIG );
+ $term->setattr(fileno($sock), &POSIX::TCSANOW );
+ }
+ } elsif ($sort eq 'I') {
+ ; # ignore echoed I frames
} elsif ($sort eq 'B') {
if ($buffered && $outqueue) {
print $stdout $outqueue;
unshift @lines, ($lastbit . $first) if ($first);
foreach $first (@lines) {
# print "send_now $call $first\n";
- $conn->send_now("D$call|$first");
+ $conn->send_now("I$call|$first");
}
$lastbit = $buf;
$savenl = ""; # reset savenl 'cos we will have done a newline on input
} else {
- $conn->send_now("D$call|$buf");
+ $conn->send_now("I$call|$buf");
}
} elsif ($r == 0) {
cease(1);
if ($port == 23) {
$sock = new Net::Telnet (Timeout => $timeout, BinMode => 1);
$sock->option_accept(Dont => TELOPT_ECHO, Wont => TELOPT_ECHO);
- #$sock->option_log('option_log');
+ $sock->option_log('option_log');
$sock->dump_log('dump');
$sock->open($host) or die "Can't connect to $host port $port $!";
} else {
my ($sort, $call, $line) = $data =~ /^(\w)(\S+)\|(.*)$/;
# do the really sexy console interface bit! (Who is going to do the TK interface then?)
- dbg('chan', "<- $sort $call $line\n");
+ dbg('chan', "<- $sort $call $line\n") unless $sort eq 'D';
# handle A records
my $user = $dxchan->user;
if ($sort eq 'A' || $sort eq 'O') {
$dxchan->start($line, $sort);
- } elsif ($sort eq 'D') {
+ } elsif ($sort eq 'I') {
die "\$user not defined for $call" if !defined $user;
# normal input
disconnect($dxchan) if ($dxchan->{state} eq 'bye');
} elsif ($sort eq 'Z') {
disconnect($dxchan);
+ } elsif ($sort eq 'D') {
+ ; # ignored (an echo)
} else {
print STDERR atime, " Unknown command letter ($sort) received from $call\n";
}