ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/MP/Transport.pm
(Generate patch)

Comparing AnyEvent-MP/MP/Transport.pm (file contents):
Revision 1.44 by root, Sun Aug 30 09:24:09 2009 UTC vs.
Revision 1.45 by root, Sun Aug 30 17:08:16 2009 UTC

76 my $release = pop; 76 my $release = pop;
77 my ($host, $port, @args) = @_; 77 my ($host, $port, @args) = @_;
78 78
79 my $state; 79 my $state;
80 80
81 $state = AnyEvent::Socket::tcp_connect $host, $port, sub { 81 $state = AnyEvent::Socket::tcp_connect $host, $port, my$x=sub {
82 my ($fh, $nhost, $nport) = @_; 82 my ($fh, $nhost, $nport) = @_;
83 83
84 return $release->() unless $fh; 84 return $release->() unless $fh;
85 85
86 $state = new AnyEvent::MP::Transport 86 $state = new AnyEvent::MP::Transport
313 $self->send ($_) 313 $self->send ($_)
314 for @$queue; 314 for @$queue;
315 315
316 # receive handling 316 # receive handling
317 my $src_node = $self->{node}; 317 my $src_node = $self->{node};
318 Scalar::Util::weaken $src_node;
319
320 my $rmsg; $rmsg = sub { 318 my $rmsg; $rmsg = $self->{rmsg} = sub {
321 $_[0]->push_read ($r_framing => $rmsg); 319 $_[0]->push_read ($r_framing => $rmsg);
322 320
323 local $AnyEvent::MP::Kernel::SRCNODE = $src_node; 321 local $AnyEvent::MP::Kernel::SRCNODE = $src_node;
324 AnyEvent::MP::Kernel::_inject (@{ $_[1] }); 322 AnyEvent::MP::Kernel::_inject (@{ $_[1] });
325 }; 323 };
326 $hdl->push_read ($r_framing => $rmsg); 324 $hdl->push_read ($r_framing => $rmsg);
325
326 Scalar::Util::weaken $rmsg;
327 Scalar::Util::weaken $src_node;
327 }); 328 });
328 }); 329 });
329 }); 330 });
330 } 331 }
331 332

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines