diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-11-30 03:39:35 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2021-11-30 23:06:43 +0900 |
commit | 7aad83580fccee926d903bdb1a2a6af2c40ef0fc (patch) | |
tree | 86b5e3ead66baaa433b53de9f8b3b88e1ab1598b /src/basic/errno-util.h | |
parent | 16edfadc6773265967be37b63ab6ce00f8b49157 (diff) | |
download | systemd-7aad83580fccee926d903bdb1a2a6af2c40ef0fc.tar.gz |
errno-util: introduce ERRNO_IS_TRANSIENT()
Diffstat (limited to 'src/basic/errno-util.h')
-rw-r--r-- | src/basic/errno-util.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h index 8cd7de5bc8..09abf0b751 100644 --- a/src/basic/errno-util.h +++ b/src/basic/errno-util.h @@ -70,6 +70,13 @@ static inline int errno_or_else(int fallback) { return -abs(fallback); } +/* For send()/recv() or read()/write(). */ +static inline bool ERRNO_IS_TRANSIENT(int r) { + return IN_SET(abs(r), + EAGAIN, + EINTR); +} + /* Hint #1: ENETUNREACH happens if we try to connect to "non-existing" special IP addresses, such as ::5. * * Hint #2: The kernel sends e.g., EHOSTUNREACH or ENONET to userspace in some ICMP error cases. See the @@ -100,10 +107,8 @@ static inline bool ERRNO_IS_DISCONNECT(int r) { * the accept(2) man page. */ static inline bool ERRNO_IS_ACCEPT_AGAIN(int r) { return ERRNO_IS_DISCONNECT(r) || - IN_SET(abs(r), - EAGAIN, - EINTR, - EOPNOTSUPP); + ERRNO_IS_TRANSIENT(r) || + abs(r) == EOPNOTSUPP; } /* Resource exhaustion, could be our fault or general system trouble */ |