socket: make all sockets non-blocking

All networking code in chronyd (NTP server/client, signd client, cmdmon
server) assumes sending a message will not block, but only the signd
client actually checks for a write event and only the NTP server
requests a non-blocking socket. The cmdmon server and NTP client
(if using one socket for all servers) might be blocked.

chronyc doesn't need a non-blocking socket, but it is not expected to
block as it sends only one message at a time.

Prefer dropped messages over blocking in all cases. Remove the
SCK_FLAG_NONBLOCK flag and make all sockets non-blocking.
This commit is contained in:
Miroslav Lichvar
2019-07-23 15:09:24 +02:00
parent d78680912e
commit 4d26cfc92b
3 changed files with 3 additions and 4 deletions

View File

@@ -160,8 +160,8 @@ open_socket(int domain, int type, int flags)
return INVALID_SOCK_FD;
}
/* Enable non-blocking mode if requested */
if (flags & SCK_FLAG_NONBLOCK && fcntl(sock_fd, F_SETFL, O_NONBLOCK)) {
/* Enable non-blocking mode */
if (fcntl(sock_fd, F_SETFL, O_NONBLOCK)) {
DEBUG_LOG("Could not set O_NONBLOCK : %s", strerror(errno));
close(sock_fd);
return INVALID_SOCK_FD;