ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent/Handle.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent/Handle.pm (file contents):
Revision 1.231 by root, Tue Mar 27 23:47:57 2012 UTC vs.
Revision 1.232 by root, Fri Mar 30 03:11:17 2012 UTC

1730 1730
1731 # bypass unshift if we already have the remaining chunk 1731 # bypass unshift if we already have the remaining chunk
1732 if ($format + $len <= length $_[0]{rbuf}) { 1732 if ($format + $len <= length $_[0]{rbuf}) {
1733 my $data = substr $_[0]{rbuf}, $format, $len; 1733 my $data = substr $_[0]{rbuf}, $format, $len;
1734 substr $_[0]{rbuf}, 0, $format + $len, ""; 1734 substr $_[0]{rbuf}, 0, $format + $len, "";
1735
1735 $cb->($_[0], Storable::thaw ($data)); 1736 eval { $cb->($_[0], Storable::thaw ($data)); 1 }
1737 or return $_[0]->_error (Errno::EBADMSG);
1736 } else { 1738 } else {
1737 # remove prefix 1739 # remove prefix
1738 substr $_[0]{rbuf}, 0, $format, ""; 1740 substr $_[0]{rbuf}, 0, $format, "";
1739 1741
1740 # read remaining chunk 1742 # read remaining chunk
1741 $_[0]->unshift_read (chunk => $len, sub { 1743 $_[0]->unshift_read (chunk => $len, sub {
1742 if (my $ref = eval { Storable::thaw ($_[1]) }) { 1744 eval { $cb->($_[0], Storable::thaw ($_[1])); 1 }
1743 $cb->($_[0], $ref);
1744 } else {
1745 $_[0]->_error (Errno::EBADMSG); 1745 or $_[0]->_error (Errno::EBADMSG);
1746 }
1747 }); 1746 });
1748 } 1747 }
1749 1748
1750 1 1749 1
1751 } 1750 }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines