projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
slight syntax change
[spider.git]
/
perl
/
ExtMsg.pm
diff --git
a/perl/ExtMsg.pm
b/perl/ExtMsg.pm
index f2d132645356c42e56e2778ae5feb15b9d15f1c6..58fb619f89925642561631e85dc6867e9b08b3ff 100644
(file)
--- 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;
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});
} 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);
} 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};
$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});
}
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};
$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->{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 {
_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;
if ($conn->{abort} && $line =~ /$conn->{abort}/i) {
dbg('connect', "aborted on /$conn->{abort}/");
$conn->disconnect;
+ delete $conn->{cmd};
return;
}
if ($line =~ /$expect/i) {
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];
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
}
sub _send_file