X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FMsg.pm;h=1c86c70ddd170a3a55b093dafd82087b0a2f5dd0;hb=abc381a196bb683f51f875de04d1ec35008e72ab;hp=b2ee9b2326690a4abc376196d91218a55333e73f;hpb=16c932699e360cd44811afc68894e55a1a128962;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index b2ee9b23..1c86c70d 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -140,9 +140,10 @@ sub _on_connect $sock->on(close => sub {$conn->disconnect;}); $sock->timeout(0); $sock->start; + $conn->{peerhost} = eval { $handle->peerhost; }; dbg((ref $conn) . " connected $conn->{cnum} to $conn->{peerhost}:$conn->{peerport}") if isdbg('connll'); if ($conn->{on_connect}) { - &{$conn->{on_connect}}($conn); + &{$conn->{on_connect}}($conn, $handle); } } @@ -154,12 +155,13 @@ sub is_connected } sub connect { - my ($pkg, $to_host, $to_port, $rproc, %args) = @_; + my ($pkg, $to_host, $to_port, %args) = @_; my $timeout = delete $args{timeout} || $connect_timeout; # Create a connection end-point object my $conn = $pkg; unless (ref $pkg) { + my $rproc = delete $args{rproc}; $conn = $pkg->new($rproc); } $conn->{peerhost} = $to_host; @@ -171,7 +173,7 @@ sub connect { my $sock; $conn->{sock} = $sock = Mojo::IOLoop::Client->new; $sock->on(connect => sub {$conn->_on_connect($_[1])} ); - $sock->on(error => sub {$conn->disconnect}); + $sock->on(error => sub {&{$conn->{eproc}}($conn, $_[1]) if exists $conn->{eproc}; $conn->disconnect}); $sock->on(close => sub {$conn->disconnect}); # copy any args like on_connect, on_disconnect etc