puma/puma — pull request #417 by cjfuller (2013-11-25 04:05:02+00:00)
Title: Fix for issue #350

Within `MiniSSL#read_nonblock` it was possible for all data to be read from the
network connection but only partially read from the engine on the first
attempt. This could lead to a hang during a later `IO.select` call because no more data
was being sent over the socket but the request could not be processed because
all the data hadn't been read from the engine.

Changed `read_nonblock` to repeatedly attempt to read from the engine until there
is nothing more ready to read.