mirror of
git://scm.dxcluster.org/scm/spider
synced 2024-09-21 15:57:12 +00:00
changed frames from client to be I frames to distinguish echos from telnet
This commit is contained in:
parent
2c10c7a8db
commit
9e6f237bf0
@ -117,6 +117,16 @@ sub rec_socket
|
||||
} 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;
|
||||
@ -163,12 +173,12 @@ sub rec_stdin
|
||||
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);
|
||||
@ -188,7 +198,7 @@ sub doconnect
|
||||
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 {
|
||||
|
@ -164,13 +164,13 @@ sub process_inqueue
|
||||
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
|
||||
@ -179,6 +179,8 @@ sub process_inqueue
|
||||
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";
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user