Daniel Walker wrote:
Dan Kegel wrote:
Daniel Walker wrote:
The problem is that poll returns POLLHUP when a socket isn't connected,
then wine ignores the socket and it's events .. I realize this has been known for a some time(since linux 2.4), but why hasn't it been fix? Doesn't this effect a lot of non-blocking socket applications?
Can you define the problem a bit more? Do you mean you get a POLLHUP *while waiting* for connection?
No, I mean that a socket is created using socket() then, say, ioctl()
is run on it. ioctl() then ,through the wineserver, runs sock_reselect() then poll() returns POLLHUP in revents and the wineserver stop watching the socket .. Since most non-blocking applications run socket() then ioctl() I would think that several applications would be effected..
This problem has already been documented. The Linux Kernel 2.4 changed the way poll() works. But wine apparently hasn't been updated to work with the way poll() currently works .. Under some situations an application will open a socket then set it as non-blocking with ioctl() , while all that is happening the wineserver gets a POLLHUP (btw, I'm talking about revents) from poll() and subsequently ignores all other event on the socket..
the issue is discussed at the bottom of this WWN ..