-##
+## $Id: //depot/libnet/Net/FTP/I.pm#11 $
## Package to read/write on BINARY data connections
##
require Net::FTP::dataconn;
@ISA = qw(Net::FTP::dataconn);
-$VERSION = "1.08"; # $Id: //depot/libnet/Net/FTP/I.pm#6$
+$VERSION = "1.10";
sub read {
my $data = shift;
my $size = shift || croak 'write($buf,$size,[$timeout])';
my $timeout = @_ ? shift : $data->timeout;
- $data->can_write($timeout) or
- croak "Timeout";
-
# If the remote server has closed the connection we will be signal'd
# when we write. This can happen if the disk on the remote server fills up
- local $SIG{PIPE} = 'IGNORE';
+ local $SIG{PIPE} = 'IGNORE' unless $^O eq 'MacOS';
my $sent = $size;
my $off = 0;
+ my $blksize = ${*$data}{'net_ftp_blksize'};
while($sent > 0) {
- my $n = syswrite($data, $buf, $sent,$off);
+ $data->can_write($timeout) or
+ croak "Timeout";
+
+ my $n = syswrite($data, $buf, $sent > $blksize ? $blksize : $sent ,$off);
return undef unless defined($n);
$sent -= $n;
$off += $n;