mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 19:27:45 +00:00
Kernel: Use TRY() in sys$recvfd()
This commit is contained in:
parent
ea911bc125
commit
77b7a44691
1 changed files with 4 additions and 10 deletions
|
@ -46,23 +46,17 @@ KResultOr<FlatPtr> Process::sys$recvfd(int sockfd, int options)
|
||||||
if (!socket.is_local())
|
if (!socket.is_local())
|
||||||
return EAFNOSUPPORT;
|
return EAFNOSUPPORT;
|
||||||
|
|
||||||
auto new_fd_or_error = m_fds.allocate();
|
auto fd_allocation = TRY(m_fds.allocate());
|
||||||
if (new_fd_or_error.is_error())
|
|
||||||
return new_fd_or_error.error();
|
|
||||||
auto new_fd = new_fd_or_error.release_value();
|
|
||||||
|
|
||||||
auto& local_socket = static_cast<LocalSocket&>(socket);
|
auto& local_socket = static_cast<LocalSocket&>(socket);
|
||||||
auto received_descriptor_or_error = local_socket.recvfd(*socket_description);
|
auto received_description = TRY(local_socket.recvfd(*socket_description));
|
||||||
|
|
||||||
if (received_descriptor_or_error.is_error())
|
|
||||||
return received_descriptor_or_error.error();
|
|
||||||
|
|
||||||
u32 fd_flags = 0;
|
u32 fd_flags = 0;
|
||||||
if (options & O_CLOEXEC)
|
if (options & O_CLOEXEC)
|
||||||
fd_flags |= FD_CLOEXEC;
|
fd_flags |= FD_CLOEXEC;
|
||||||
|
|
||||||
m_fds[new_fd.fd].set(*received_descriptor_or_error.value(), fd_flags);
|
m_fds[fd_allocation.fd].set(move(received_description), fd_flags);
|
||||||
return new_fd.fd;
|
return fd_allocation.fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue