INFO: Winsock Ignores ICMP Port Unreachable Control Messages

This article has been archived. It is offered "as is" and will no longer be updated.

Summary

ICMP Port Unreachable control messages are ignored by the Winsock layer on versions of Windows as specified applies to section. If Winsock UDP application is sending datagram to a host application that has already gone, the host replies with ICMP Port Unreachable control message. If the Winsock application is then blocking on receiving datagram from the peer, it will not unblock on receiving the ICMP Port Unreachable control message. If the application needs to detect the existence of the UDP peer under such scenarios, it may use nonblocking socket or overlapped socket with timeout and retries.

More information

On Windows 2000, a feature is added to unblock Winsock application and returning 10054 (WSA_ECONNRESET) through WSAGetLastError if ICMP Host Unreachable control message is received for a bound socket.

For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

263823 WinSock Recvfrom() Now Returns WSAECONNRESET Instead of Blocking or Timing Out