Corinna Vinschen wrote:

> On Tue, Nov 19, 2002 at 01:34:30PM +0000, Steven O'Brien wrote:
> > Hi
> > 
> > The current implementation of poll() does not behave correctly with
> > listen sockets. It always gives a POLLERR revent when a connection
> > request is received. I believe the error is in poll.cc lines 96-108:
> > [...]

> Thanks for the report.  I've checked in a patch.  Please try the
> next developers snapshot.

> Corinna

Thanks Corinna, but its still not quite right. poll() needs to set
POLLIN
when a connection request is received on a listen socket. The following
patch completes the job:

--- poll.cc     2002-11-20 08:57:03.000000000 +0000
+++ poll.cc-fix 2002-11-20 09:01:21.000000000 +0000
@@ -111,9 +111,12 @@ poll (struct pollfd *fds, unsigned int n
                                 Unfortunately, recvfrom() doesn't make much
                                 sense then.  It returns WSAENOTCONN in that
                                 case.  Since that's not actually an error,
-                                we must not set POLLERR. */
+                                we must not set POLLERR, but POLLIN to
+                                indicate the request. */
                              if (WSAGetLastError () != WSAENOTCONN)
                                fds[i].revents |= POLLERR;
+                             else
+                               fds[i].revents |= POLLIN;
                              break;
                            case 0:  /* Closed on the read side. */
                              fds[i].revents |= POLLHUP;

Regards,
 Steven

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to