On Fri, 09 Nov 2018 at 19:16:39 +0000, Mendelmunkis wrote: >> Which error(s) do you have in mind? > > “destination unreachable” comes to mind. > Right now it only checks for connection refused
I'm confused, if write(2) returns -1 and sets errno to ‘ECONNREFUSED’,
it might be *because* an ICMP “Destination unreachable” message was just
received on the socket.
E.g, for the following trace
$ strace -e trace=write nc -vuN 127.0.0.1 12345
write(3, "X", 1) = 1
write(3, "X", 1) = -1 ECONNREFUSED (Connection
refused)
+++ exited with 1 +++
I captured these UDP & ICMP packets on the loopback interface:
21:04:31.475446 IP 127.0.0.1.55080 > 127.0.0.1.12345: UDP, length 1
21:04:31.475469 IP 127.0.0.1 > 127.0.0.1: ICMP 127.0.0.1 udp port 12345
unreachable, length 37
(using `tcpdump -n -i lo "icmp or udp dst portrange 12345"`). The
received ICMP packet is what caused the second write to fail with
‘ECONNREFUSED’.
--
Guilhem.
signature.asc
Description: PGP signature

