Skip Menu |

This queue is for tickets about the HTTP-Daemon-SSL CPAN distribution.

Report information
The Basics
Id: 45625
Status: open
Priority: 0/
Queue: HTTP-Daemon-SSL

People
Owner: Nobody in particular
Requestors: davidgaramond [...] gmail.com
Cc:
AdminCc:

Bug Information
Severity: Normal
Broken in: 1.04
Fixed in: (no value)



Subject: IO::Socket::SSL and HTTP::Daemon's select-sysread loop don't work well together
HTTP::Daemon::SSL hangs on largish (e.g. >37k or >67k) POST request. Quoting zwon on perlmonks.org: "It looks like select-sysread loop in HTTP::Daemon doesn't work correctly with IO::Socket::SSL. That's because select in _need_more tests real filehandle and sysread reads from IO::Socket::SSL object which is buffered, so sysread($self, $_[0], 2048, length($_[0])) may actually read more than 2048 bytes from the socket and subsequent select on socket will hang. Removing Timeout [which avoids the select() altogether] as proposed by derby solves the problem." Complete description in: http://www.perlmonks.org/?node_id=761270
It's a bug in the base classes from LWP - raised RT #52602 and added skipped tests and warnings to HTTP::Daemon::SSL dist.
ok, so it is a bug in the base classes IMO, but it turns out that is what the _need_more override was there for in HTTP::Daemon::SSL 1.03. I have reinstated that in the dev release 1.05_01. Apparently it caused issues before but I cannot replicate them now. More investigation is needed before releasing this as a main version. On Wed Dec 09 06:19:42 2009, AUFFLICK wrote: Show quoted text
> It's a bug in the base classes from LWP - raised RT #52602 and added > skipped tests and warnings to HTTP::Daemon::SSL dist.
Just tried out HTTP::Daemon::SSL 1.05_01. It still hangs. In fact, unlike 1.04, it still hangs even when Timeout option is not specified. To reproduce the problem, you can use my test case: https://github.com/sharyanto/test/tree/master/20140603-http_daemon_ssl-hanging-problem Using HTTP::Daemon::SSL 1.04, run http-daemon-ssl-with-timeout and launch a rather long request (see README.org). It hangs. Use http-daemon-ssl-without-timeout and it won't hang. But using HTTP::Daemon::SSL 1.05_01, both daemon will hang. Regards, Steven