From f61df0da1b1ebf73933bf87eaf4db0984ef28116 Mon Sep 17 00:00:00 2001 From: Mathieu Trossevin Date: Tue, 9 Jan 2024 10:35:48 +0100 Subject: [PATCH] listen: Make one of the closure into a function This make it a bit easier to debug any problems with it. --- src/listen/mod.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/listen/mod.rs b/src/listen/mod.rs index 5bd7763..838caab 100644 --- a/src/listen/mod.rs +++ b/src/listen/mod.rs @@ -236,6 +236,18 @@ impl FileDescriptor { .collect::>()) } + fn from_fd_offset(fd_offset: usize) -> Result { + SD_LISTEN_FDS_START + .checked_add(fd_offset as RawFd) + .map(|fd| { + // SAFETY: The file descriptor won't be closed by the time we duplicate it. + let fd = unsafe { BorrowedFd::borrow_raw(fd) }; + rustix::fs::fcntl_dupfd_cloexec(fd, 0).map_err(DupError::from) + }) + .expect("Already checked against overflow.") + .map(Self::from_fd) + } + fn from_fds( num_fds: usize, ) -> Result>, GetFdsError> { @@ -243,17 +255,7 @@ impl FileDescriptor { return Err(GetFdsError::TooManyFDs(num_fds)); } - let ret = (0..num_fds).map(|fd_offset| { - SD_LISTEN_FDS_START - .checked_add(fd_offset as RawFd) - .map(|fd| { - // SAFETY: The file descriptor won't be closed by the time we duplicate it. - let fd = unsafe { BorrowedFd::borrow_raw(fd) }; - rustix::fs::fcntl_dupfd_cloexec(fd, 0).map_err(DupError::from) - }) - .expect("Already checked against overflow.") - .map(Self::from_fd) - }); + let ret = (0..num_fds).map(Self::from_fd_offset); Ok(ret) }