I’m working on an SSL client/server application using persistent TLSv1
connections. I’m having some issues with my server and what I think
should be a blocking read or select.
I’m basically doing this where @io is an OpenSSL::SSL::SSLSocket:
until @data.length == READ_SIZE do
tmp = @io.read(READ_SIZE - @data.length)
@data << tmp
(I did not initially have the select call, but decided to give that a
I would expect that the read would block (I have not set O_NONBLOCK on
the socket) until there is data to be read. Instead, when there is no
data, every read call returns nil. I thought the select would fix
that, but it returns immediately and the read call again returns nil.
Am I misunderstanding how this should work? Would the fact that it’s
an SSL connection cause the issue?
I’m using 1.8.4 on Linux.
Thanks for any insights you can offer.