You are currently offline, waiting for your internet to reconnect

FD_READ Event Is Not Signaled on Connected Socket If Data Arrives Right After an Accept() on SAN

This article was previously published under Q289232
This article has been archived. It is offered "as is" and will no longer be updated.
On a system area network (SAN) connection, when a program that uses EventSelect calls on a listening socket and then data arrives right after an accept, the program may wait indefinitely for notification of the FD_READ event on the connected socket.

In addition, another race condition may result under the following conditions:
  • The available listening backlog has become zero.
  • The server side calls an accept, which increments the available backlog by one.
  • A connection is attempted before the increment takes place.
This race condition causes the server to refuse the connection.
This behavior occurs because the Windows 2000 Afd.sys driver contains incorrect settings.
To resolve this problem, obtain the latest service pack for Windows 2000. For additional information, click the following article number to view the article in theMicrosoft Knowledge Base:
260910 How to Obtain the Latest Windows 2000 Service Pack
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

This problem was first corrected in Windows 2000 Service Pack 2.
Many programs use WSAEventSelect and WSAEnumNetworkEvents/WaitForSingleObject calls to be notified of the network events that happen on a socket. Any program that waits for an FD_READ event on a connected socket can run into this problem, which causes that program thread to wait indefinitely for FD_READ notification.

Article ID: 289232 - Last Review: 10/23/2013 16:28:21 - Revision: 3.2

Microsoft Windows 2000 Service Pack 1, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Service Pack 1

  • kbnosurvey kbarchive kbbug kbfix kbnetwork KB289232