X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FExtMsg.pm;h=be7d0e84c0ada79e8b349e83c445e59b01b4165c;hb=d2e14e92b056ee6d648d3ad16f3f3b32293cc629;hp=07d77cba3a05b92ddb8b31bf82acd208a4421d1c;hpb=28830bd907c3f7192605ad4aa6c818feb2394e70;p=spider.git diff --git a/perl/ExtMsg.pm b/perl/ExtMsg.pm index 07d77cba..be7d0e84 100644 --- a/perl/ExtMsg.pm +++ b/perl/ExtMsg.pm @@ -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;