X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FExtMsg.pm;h=58fb619f89925642561631e85dc6867e9b08b3ff;hb=8cf5b21b8c40d97b30a0f605247bc65210df734f;hp=f2d132645356c42e56e2778ae5feb15b9d15f1c6;hpb=2eb96829a9b19c1cf13d196a8e0da24345a5ba3c;p=spider.git diff --git a/perl/ExtMsg.pm b/perl/ExtMsg.pm index f2d13264..58fb619f 100644 --- a/perl/ExtMsg.pm +++ b/perl/ExtMsg.pm @@ -31,6 +31,11 @@ sub enqueue unless ($msg =~ /^[ABZ]/) { if ($msg =~ /^E[-\w]+\|([01])/) { $conn->{echo} = $1; + if ($1) { + $conn->send_raw("\xFF\xFC\x01"); + } else { + $conn->send_raw("\xFF\xFB\x01"); + } } else { $msg =~ s/^[-\w]+\|//; push (@{$conn->{outqueue}}, $msg . $conn->{lineend}); @@ -76,7 +81,7 @@ sub dequeue } elsif ($conn->{state} eq 'WC') { if (exists $conn->{cmd} && @{$conn->{cmd}}) { $conn->_docmd($msg); - unless (exists $conn->{cmd} && @{$conn->{cmd}}) { + if ($conn->{state} eq 'WC' && exists $conn->{cmd} && @{$conn->{cmd}} == 0) { $conn->{state} = 'C'; &{$conn->{rproc}}($conn, "O$conn->{call}|telnet"); delete $conn->{cmd}; @@ -87,7 +92,7 @@ sub dequeue } if ($conn->{msg} && $conn->{state} eq 'WC' && exists $conn->{cmd} && @{$conn->{cmd}}) { $conn->_docmd($conn->{msg}); - unless (@{$conn->{cmd}}) { + if ($conn->{state} eq 'WC' && exists $conn->{cmd} && @{$conn->{cmd}} == 0) { $conn->{state} = 'C'; &{$conn->{rproc}}($conn, "O$conn->{call}|telnet"); delete $conn->{cmd}; @@ -111,6 +116,7 @@ sub new_client { $conn->{state} = 'WL'; # $conn->send_raw("\xff\xfe\x01\xff\xfc\x01\ff\fd\x22"); # $conn->send_raw("\xff\xfa\x22\x01\x01\xff\xf0"); + $conn->send_raw("\xFF\xFC\x01"); _send_file($conn, "$main::data/issue"); $conn->send_raw("Login: "); } else { @@ -234,6 +240,7 @@ sub _dochat if ($conn->{abort} && $line =~ /$conn->{abort}/i) { dbg('connect', "aborted on /$conn->{abort}/"); $conn->disconnect; + delete $conn->{cmd}; return; } if ($line =~ /$expect/i) { @@ -263,6 +270,10 @@ sub _doclient my @f = split /\s+/, $line; $conn->{call} = uc $f[0] if $f[0]; $conn->{csort} = $f[1] if $f[1]; + $conn->{state} = 'C'; + &{$conn->{rproc}}($conn, "O$conn->{call}|telnet"); + delete $conn->{cmd}; + $conn->{timeout}->del_timer if $conn->{timeout}; } sub _send_file