X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=perl%2FMsg.pm;h=1c86c70ddd170a3a55b093dafd82087b0a2f5dd0;hb=abc381a196bb683f51f875de04d1ec35008e72ab;hp=fadab099783cd36d42463cbb932910a515e399c1;hpb=7312707b4a2412cb690a351dfc07dc144f0937e4;p=spider.git diff --git a/perl/Msg.pm b/perl/Msg.pm index fadab099..1c86c70d 100644 --- a/perl/Msg.pm +++ b/perl/Msg.pm @@ -143,7 +143,7 @@ sub _on_connect $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); } } @@ -155,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; @@ -172,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