[PATCH] resolv_test.c: also cope with CONNREFUSED errors returned by recvfrom

Florian Weimer fweimer@redhat.com
Mon Sep 25 08:20:00 GMT 2017


On 09/25/2017 09:38 AM, Samuel Thibault wrote:
> Florian Weimer, on lun. 25 sept. 2017 09:31:02 +0200, wrote:
>> On 09/10/2017 04:38 PM, Samuel Thibault wrote:
>>> +  if (length < 0)
>>> +    {
>>> +      /* The other end had closed the socket, and we are notified only now. */
>>> +      TEST_VERIFY_EXIT (errno == ECONNREFUSED);
>>> +      return true;
>>> +    }
>>
>> Sorry for not replying sooner.
>>
>> This UDP socket is unconnected.  If asynchronous error notifications are
>> received on it, this is arguably a TCP/IP stack bug.
> 
> Reception of "port unreachable" icmp packets can be asynchronous with
> UDP too.

Stevens says that this can happen on connected sockets only.  Both TCPv2 
and UNIX Network Programming have detailed explanations.  I can 
summarize those if you don't have access.

The only quoted exception is Linux, but the kernel behavior changed 
around 2.4.0.

Thanks,
Florian



More information about the Libc-alpha mailing list