fix transient PC41
[spider.git] / perl / ExtMsg.pm
index 07d77cba3a05b92ddb8b31bf82acd208a4421d1c..be7d0e84c0ada79e8b349e83c445e59b01b4165c 100644 (file)
@@ -118,7 +118,7 @@ sub to_connected
        $conn->{timeout}->del if $conn->{timeout};
        delete $conn->{timeout};
        &{$conn->{rproc}}($conn, "$dir$call|$sort");
-       $conn->_send_file("$main::data/connected");
+       $conn->_send_file("$main::data/connected") unless $conn->{outgoing};
 }
 
 sub new_client {
@@ -129,14 +129,14 @@ sub new_client {
                $conn->{sock} = $sock;
                Msg::blocking($sock, 0);
                $conn->{blocking} = 0;
-               my $host;
-               eval {$host = $conn->{peerhost}};
-               my $port;
-               eval {$port = $conn->{peerport}} unless $@;
+               eval {$conn->{peerhost} = $sock->peerhost};
                if ($@) {
+                       dbg('conn', $@);
                        $conn->disconnect;
                } else {
-                       my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost} = $host, $conn->{peerport} = $port);
+                       eval {$conn->{peerport} = $sock->peerport};
+                       $conn->{peerport} = 0 if $@;
+                       my ($rproc, $eproc) = &{$server_conn->{rproc}} ($conn, $conn->{peerhost}, $conn->{peerport});
                        dbg('connll', "accept $conn->{cnum} from $conn->{peerhost} $conn->{peerport}");
                        if ($eproc) {
                                $conn->{eproc} = $eproc;
@@ -169,6 +169,7 @@ sub start_connect
        my $call = shift;
        my $fn = shift;
        my $conn = ExtMsg->new(\&main::new_channel); 
+       $conn->{outgoing} = 1;
        $conn->conns($call);
        
        my $f = new IO::File $fn;