From: Yu Watanabe Date: Thu, 2 Aug 2018 06:36:32 +0000 (+0900) Subject: resolve: treat some icmp errors as disconnected X-Git-Tag: v240~861 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=68c597e9e4bb36ade966d9df54dfaa9f956230e9;p=thirdparty%2Fsystemd.git resolve: treat some icmp errors as disconnected Fixes #9773. --- diff --git a/src/basic/fd-util.h b/src/basic/fd-util.h index 8adc959da8a..00303a7e454 100644 --- a/src/basic/fd-util.h +++ b/src/basic/fd-util.h @@ -78,8 +78,12 @@ int acquire_data_fd(const void *data, size_t size, unsigned flags); int fd_duplicate_data_fd(int fd); /* Hint: ENETUNREACH happens if we try to connect to "non-existing" special IP addresses, such as ::5 */ -#define ERRNO_IS_DISCONNECT(r) \ - IN_SET(r, ENOTCONN, ECONNRESET, ECONNREFUSED, ECONNABORTED, EPIPE, ENETUNREACH) +/* The kernel sends e.g., EHOSTUNREACH or ENONET to userspace in some ICMP error cases. + * See the icmp_err_convert[] in net/ipv4/icmp.c in the kernel sources */ +#define ERRNO_IS_DISCONNECT(r) \ + IN_SET(r, \ + ENOTCONN, ECONNRESET, ECONNREFUSED, ECONNABORTED, EPIPE, \ + ENETUNREACH, EHOSTUNREACH, ENOPROTOOPT, EHOSTDOWN, ENONET) /* Resource exhaustion, could be our fault or general system trouble */ #define ERRNO_IS_RESOURCE(r) \