WINSOCK.DLL Asynch. Send() Doesn't Signal WSAEWOULDBLOCK (134254)



The information in this article applies to:

  • Microsoft LAN Manager 2.2
  • Microsoft Windows for Workgroups 3.11

This article was previously published under Q134254

SYMPTOMS

Applications issuing asynchronous send() calls to LAN Manager's real mode TCP/IP WINSOCK.DLL fail.

CAUSE

The WINSOCK.DLL file included in the real mode TCP/IP protocol from LAN Manager and Windows for Workgroups 3.11 does not "set errno = WSAEWOULDBLOCK" and "SOCKET_ERROR = -1" when the out buffer is full on send() calls to an asynchronous socket.

RESOLUTION

Use Microsoft TCP/IP-32 for Windows for Workgroups, a protected mode VxD TCP/IP and its accompanying WINSOCK.DLL or test for the condition where send() on an asynchronous socket returns 0 bytes written and periodically issue select() on the socket until your application is able to send() again.

STATUS

Microsoft has confirmed this to be a problem in LAN Manager 2.2b and Windows for Workgroups 3.11. A fix to this problem is in development, but has not been regression-tested and may be destabilizing in production environments. Microsoft does not recommend implementing this fix at this time. Contact Microsoft Product Support Services for more information on the availability of this fix.

Modification Type:MajorLast Reviewed:10/23/2003
Keywords:KB134254