fix nasty timer bug
[spider.git] / perl / ExtMsg.pm
index ae6c8a4c447a8d6bd5d56b528634589593f49b1b..cc938bd822223706de2e50369d5cd29fe1b0590c 100644 (file)
@@ -115,9 +115,8 @@ sub to_connected
        delete $conn->{cmd};
        $conn->{timeout}->del if $conn->{timeout};
        delete $conn->{timeout};
-       $conn->_send_file("$main::data/connected");
-       Msg->sleep(1);
        &{$conn->{rproc}}($conn, "$dir$call|$sort");
+       $conn->_send_file("$main::data/connected");
 }
 
 sub new_client {
@@ -253,7 +252,7 @@ sub _doconnect
                                        *STDOUT = IO::File->new_from_fd($b, 'w') or die;
                                        *STDERR = IO::File->new_from_fd($b, 'w') or die;
                                        close $a;
-                                       unless ($^O =~ /^MS/) {
+                                       unless ($main::is_win) {
 #                                              $SIG{HUP} = 'IGNORE';
                                                $SIG{HUP} = $SIG{CHLD} = $SIG{TERM} = $SIG{INT} = 'DEFAULT';
                                                alarm(0);
@@ -319,8 +318,10 @@ sub _dochat
                                return;
                        }
                        if ($line =~ /\Q$expect/i) {
-                               dbg('connect', "got: \"$expect\" sending: \"$send\"");
-                               $conn->send_later("D$conn->{call}|$send");
+                               if (length $send) {
+                                       dbg('connect', "got: \"$expect\" sending: \"$send\"");
+                                       $conn->send_later("D$conn->{call}|$send");
+                               }
                                delete $conn->{msg}; # get rid any input if a match
                                return;
                        }
@@ -334,8 +335,6 @@ sub _timedout
 {
        my $conn = shift;
        dbg('connect', "timed out after $conn->{timeval} seconds");
-       $conn->{timeout}->del;
-       delete $conn->{timeout};
        $conn->disconnect;
 }
 
@@ -364,6 +363,7 @@ sub _send_file
                if ($f) {
                        while (<$f>) {
                                chomp;
+                               dbg('connll', $_);
                                $conn->send_raw($_ . $conn->{lineend});
                        }
                        $f->close;