[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