The "short write" error reported by http.pm is a shorthand for
"Your operating system has exploited a perfectly legal feature
that apparently has not been encountered in other operating
systems to date." That feature is the possibility that syswrite
might return having only written part of the requested record,
and I have encountered it under QNX4 for file sizes in excess
of 10K bytes. This patch does the obvious loop to write out the
rest.

  -Norton Allen

*** ../ORIG/libwww-perl-5.53/lib/LWP/Protocol/http.pm   Fri Apr  6 22:13:25 2001
--- libwww-perl-5.53/lib/LWP/Protocol/http.pm   Tue Aug  7 13:26:29 2001
***************
*** 173,182 ****
        }
      }
      elsif (defined($$cont_ref) && length($$cont_ref)) {
!       die "write timeout" if $timeout && !$sel->can_write($timeout);
!       $n = $socket->syswrite($$cont_ref, length($$cont_ref));
!       die $! unless defined($n);
!       die "short write" unless $n == length($$cont_ref);
        LWP::Debug::conns($buf);
      }
  
--- 173,186 ----
        }
      }
      elsif (defined($$cont_ref) && length($$cont_ref)) {
!       my $offset = 0;
!       my $length = length($$cont_ref);
!       while ( $offset < $length ) {
!           die "write timeout" if $timeout && !$sel->can_write($timeout);
!           $n = $socket->syswrite($$cont_ref, $length-$offset, $offset );
!           die $! unless defined($n);
!           $offset += $n;
!       }
        LWP::Debug::conns($buf);
      }
  

Reply via email to