Knowledge Base

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

Article ID: 134254

Article Last Modified on 10/23/2003


APPLIES TO


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.

Additional query words: 2.2c, 2.2b, 2.20

Keywords: KB134254