X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FExtMsg.pm;h=33c17bfd44bcc18bef606c60a221453989da6259;hb=94d6432422ca8bdd0918789ce2335a44b29faa81;hp=f2d132645356c42e56e2778ae5feb15b9d15f1c6;hpb=2eb96829a9b19c1cf13d196a8e0da24345a5ba3c;p=spider.git diff --git a/perl/ExtMsg.pm b/perl/ExtMsg.pm index f2d13264..33c17bfd 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) {