The Ruby implentation of NonblockingServer assumes that each socket
read places at most one message into the buffer.
Specifically, NonblockingServer::IOManager.read_connection currently
has lines that read:
> frame = slice_frame(@buffers[fd])
> if frame
> ....
These lines should instead read:
> while (frame = slice_frame!(@buffers[fd]))
> ...
------------
Oliver Kennedy
We are all agreed that your theory is crazy. The question
which divides us is whether it is crazy enough to have a
chance of being correct. My own feeling is that it is not
crazy enough.
-- Niels Bohr