Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 5 additions & 8 deletions src/native/eventpipe/ds-ipc-pal-socket.c
Original file line number Diff line number Diff line change
Expand Up @@ -323,11 +323,8 @@ ipc_socket_create_uds (DiagnosticsIpc *ipc)
DS_ENTER_BLOCKING_PAL_SECTION;
new_socket = socket (ipc->server_address_family, socket_type, 0);
#ifndef SOCK_CLOEXEC
if (new_socket != DS_IPC_INVALID_SOCKET) {
if (fcntl (new_socket, F_SETFD, FD_CLOEXEC) == -1) {
EP_ASSERT (!"Failed to set CLOEXEC");
}
}
if (new_socket != DS_IPC_INVALID_SOCKET)
fcntl (new_socket, F_SETFD, FD_CLOEXEC); // ignore any failures; this is best effort
#endif // SOCK_CLOEXEC
DS_EXIT_BLOCKING_PAL_SECTION;
return new_socket;
Expand Down Expand Up @@ -356,9 +353,9 @@ ipc_socket_create_tcp (DiagnosticsIpc *ipc)
new_socket = socket (ipc->server_address_family, socket_type, IPPROTO_TCP);
if (new_socket != DS_IPC_INVALID_SOCKET) {
#ifndef SOCK_CLOEXEC
if (fcntl (new_socket, F_SETFD, FD_CLOEXEC) == -1) {
EP_ASSERT (!"Failed to set CLOEXEC");
}
#ifndef HOST_WIN32
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should still check the existence of SOCK_CLOEXEC so we only do the fcntl call if we didn't already set it during the call to socket.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is already under #ifndef SOCK_CLOEXEC, or maybe you though about adding check for FD_CLOEXEC as well? That is not something we have done in other places doing similar code (just checking SOCK_CLOEXEC), and I know that some Mono headers actually define this on platforms where its not used/available, so on those platforms the additional check won't make any difference.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, no I missed line 355 because I was reviewing this on my phone 🙄. If we're checking ifndef SOCK_CLOEXEC this is fine.

nit: #if !defined(SOCK_CLOEXEC) && !defined(HOST_WIN32)?

fcntl (new_socket, F_SETFD, FD_CLOEXEC); // ignore any failures; this is best effort
#endif // HOST_WIN32
#endif // SOCK_CLOEXEC
int option_value = 1;
setsockopt (new_socket, IPPROTO_TCP, TCP_NODELAY, (const char*)&option_value, sizeof (option_value));
Expand Down