It turns out that if HTTP response content length is 1024 bytes for this
particular query, "sysread" inside subroutine my_readline of file
Net::HTTP/Methods.pm is returning undef with EAGAIN instead of EOF (0) in
the next sysread loop iteration.
I don't know why it happens with this particular request only, as other
1024 byte response produces EOF as expected.
I have modified sysread($_, 1024, length) with sysread($_, 2048, length) in
Net/HTTP/Methods.pm. Hope increasing read size won't break other things.
Thanks,
Om.
On Tue, Jul 5, 2016 at 12:19 AM, Bugs in SOAP via RT <bug-SOAP@rt.cpan.org>
wrote:
Show quoted text>
> Greetings,
>
> This message has been automatically generated in response to the
> creation of a trouble ticket regarding:
> "SOAP::Lite client waits forever until server TCP RST for a
> particular size response",
> a summary of which appears below.
>
> There is no need to reply to this message right now. Your ticket has been
> assigned an ID of [rt.cpan.org #115864]. Your ticket is accessible
> on the web at:
>
>
https://rt.cpan.org/Ticket/Display.html?id=115864
>
> Please include the string:
>
> [rt.cpan.org #115864]
>
> in the subject line of all future correspondence about this issue. To do
> so,
> you may reply to this message.
>
> Thank you,
> bug-SOAP@rt.cpan.org
>
> -------------------------------------------------------------------------
> Hello,
>
> I am using SOAP::Lite client version 1.20 for MS Navision web service using
> ubuntu 12.04 and perl 5.14.2.
>
> Problem I am facing is that the client keeps waiting for server response,
> though the server had already replied as seen from tcpdump. Ultimately the
> server sends TCP RST and only after that client completes with correct
> received data.
>
> Strangely enough, I see this problem with HTTP response of size 877 bytes
> (or tcpdump size 1024 bytes) only. For other content lengths, more or less,
> the client works as expected, i.e. it sends TCP FIN as soon as server
> replies with data, thus completing the transaction in an expected manner.
>
> From what I see, the client expects more data from the server, only in case
> of response size of 877 bytes and keeps waiting until server resets the
> connection.
>
> I tried with CentOS using perl 5.10.1 and SOAP::Lite 1.20 and I get the
> same result as above.
>
> Thanks,
> Om.
>