IO::Socket::SSL::read() uses ssl_read_all() for reading data when $blocking is set. In previous versions it used read(), which has different semantics: ssl_read_all() reads data until EOF, while Net:: SSLeay:read() returned after first EOL. This causes problems for example with HTTP::Daemon:SSL, that uses sysread() on a request. It can't do anything until read() returns, and read() returns only when client closes connection, and in this case processing the request makes no sense... Using ssl_read_CRLF instead of ssl_read_all solves the problem.