This one is driving me nuts! What causes and IO object (more
specifically a UDPSocket here, bound to port 1025) to become “buffered”?
When I do simple test case in irb with such a socket, I can call
#recvfrom on it with no problem. In my actual server, I get the error:
“`recvfrom’: recv for buffered IO (IOError)”. I can’t figure out why.
I payed attention that no threads are created, I do a select on this
socket (and others) to check for read readiness before calling
So what made the socket suddenly buffered so that #recv becomes illegal?
How can I check the buffered status of an IO? Can I revert it from
buffered to unbuffered?
It seems that I could get around this condition with #readpartial. But
this method is not avaible in 1.8.2. This code will need to run on
Windows and I rely on the one click installer…
Could someone shed some light on this “buffered” issue? It confuses the
hell out of me and the Google responses didn’t enlighten me.