From 0ca535538561765ca0bb1e25624a6b50ce0e5388 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Mon, 13 Feb 2023 16:45:27 +0000 Subject: [PATCH 1/2] eio_linux: fix missing close-on-exec flag for sockets --- lib_eio_linux/eio_linux.ml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib_eio_linux/eio_linux.ml b/lib_eio_linux/eio_linux.ml index ccb0478f2..019d642fe 100644 --- a/lib_eio_linux/eio_linux.ml +++ b/lib_eio_linux/eio_linux.ml @@ -1100,7 +1100,7 @@ let net = object let host = Eio_unix.Ipaddr.to_unix host in Unix.SOCK_STREAM, Unix.ADDR_INET (host, port) in - let sock_unix = Unix.socket (socket_domain_of listen_addr) socket_type 0 in + let sock_unix = Unix.socket ~cloexec:true (socket_domain_of listen_addr) socket_type 0 in (* For Unix domain sockets, remove the path when done (except for abstract sockets). *) begin match listen_addr with | `Unix path -> @@ -1125,7 +1125,7 @@ let net = object let host = Eio_unix.Ipaddr.to_unix host in Unix.SOCK_STREAM, Unix.ADDR_INET (host, port) in - let sock_unix = Unix.socket (socket_domain_of connect_addr) socket_type 0 in + let sock_unix = Unix.socket ~cloexec:true (socket_domain_of connect_addr) socket_type 0 in let sock = FD.of_unix ~sw ~seekable:false ~close_unix:true sock_unix in Low_level.connect sock addr; (flow sock :> ) From 32a30889b8316a6983a7ea54c9ceb0d535d53e6f Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Tue, 14 Feb 2023 09:01:34 +0000 Subject: [PATCH 2/2] eio_linux: simplify connect code --- lib_eio_linux/eio_linux.ml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib_eio_linux/eio_linux.ml b/lib_eio_linux/eio_linux.ml index 019d642fe..a901a9c00 100644 --- a/lib_eio_linux/eio_linux.ml +++ b/lib_eio_linux/eio_linux.ml @@ -1118,14 +1118,14 @@ let net = object listening_socket sock method connect ~sw connect_addr = - let socket_type, addr = + let addr = match connect_addr with - | `Unix path -> Unix.SOCK_STREAM, Unix.ADDR_UNIX path + | `Unix path -> Unix.ADDR_UNIX path | `Tcp (host, port) -> let host = Eio_unix.Ipaddr.to_unix host in - Unix.SOCK_STREAM, Unix.ADDR_INET (host, port) + Unix.ADDR_INET (host, port) in - let sock_unix = Unix.socket ~cloexec:true (socket_domain_of connect_addr) socket_type 0 in + let sock_unix = Unix.socket ~cloexec:true (socket_domain_of connect_addr) Unix.SOCK_STREAM 0 in let sock = FD.of_unix ~sw ~seekable:false ~close_unix:true sock_unix in Low_level.connect sock addr; (flow sock :> )