posix: fix socket fd leaks

This commit is contained in:
Jacob Young 2024-02-28 03:42:10 +01:00
parent ae7f3fc360
commit 17d0bb5bea

View File

@ -3697,6 +3697,7 @@ pub fn socket(domain: u32, socket_type: u32, protocol: u32) SocketError!socket_t
switch (errno(rc)) {
.SUCCESS => {
const fd = @as(fd_t, @intCast(rc));
errdefer close(fd);
if (!have_sock_flags) {
try setSockFlags(fd, socket_type);
}
@ -4035,6 +4036,10 @@ pub fn accept(
}
};
errdefer switch (builtin.os.tag) {
.windows => windows.closesocket(accepted_sock) catch unreachable,
else => close(accepted_sock),
};
if (!have_accept4) {
try setSockFlags(accepted_sock, flags);
}