mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-22173: socket accept - test for failure
accept might return an error, including SOCKET_EAGAIN/ SOCKET_EINTR. The caller, usually handle_connections_sockets can these however and invalid file descriptor isn't something to call fcntl on. Thanks to Etienne Guesnet (ATOS) for diagnosis, sample patch description and testing.
This commit is contained in:
committed by
Vladislav Vaintroub
parent
c43a666662
commit
3efdac2064
@@ -1048,10 +1048,14 @@ inline_mysql_socket_accept
|
||||
#else
|
||||
socket_accept.fd= accept(socket_listen.fd, addr, &addr_length);
|
||||
#ifdef FD_CLOEXEC
|
||||
flags= fcntl(socket_accept.fd, F_GETFD);
|
||||
if (flags != -1) {
|
||||
flags |= FD_CLOEXEC;
|
||||
fcntl(socket_accept.fd, F_SETFD, flags);
|
||||
if (socket_accept.fd != INVALID_SOCKET)
|
||||
{
|
||||
flags= fcntl(socket_accept.fd, F_GETFD);
|
||||
if (flags != -1)
|
||||
{
|
||||
flags |= FD_CLOEXEC;
|
||||
fcntl(socket_accept.fd, F_SETFD, flags);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
@@ -1070,10 +1074,14 @@ inline_mysql_socket_accept
|
||||
#else
|
||||
socket_accept.fd= accept(socket_listen.fd, addr, &addr_length);
|
||||
#ifdef FD_CLOEXEC
|
||||
flags= fcntl(socket_accept.fd, F_GETFD);
|
||||
if (flags != -1) {
|
||||
flags |= FD_CLOEXEC;
|
||||
fcntl(socket_accept.fd, F_SETFD, flags);
|
||||
if (socket_accept.fd != INVALID_SOCKET)
|
||||
{
|
||||
flags= fcntl(socket_accept.fd, F_GETFD);
|
||||
if (flags != -1)
|
||||
{
|
||||
flags |= FD_CLOEXEC;
|
||||
fcntl(socket_accept.fd, F_SETFD, flags);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user