Subject: | Net::SSL fails to recieve last chunk of body from some servers |
Since net-http 6.03 the content of responses from some servers has been cut short, and the response will take the pre failure response time + the configured time out to fail.
Further investigation reveals that the issue is being caused by the new can_read method in Net::HTTP::Methods. The select syscall works for all chunks except for the last one, where the final chunk is held in the openssl objects buffer. Therefore the select syscall timesout waiting for the final chunk. A temprary fix is to simply add:-
return 1 if $self->isa('Net::SSL');
to the top of the can_read function. A better fix would require the implemntation of acces to the openssl pending boolean in Net::SSL/Crypt::SSLeay.