G
Guillaume Marcais
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 #recvfrom.
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.
Guillaume.
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 #recvfrom.
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.
Guillaume.