Browse Source

2026-09-06 23:28:07

Signed-off-by: lizzie <lizzie@eden-emu.dev>
lizzie/refactor-networking-12
lizzie 3 days ago
parent
commit
59c2567cc1
  1. 19
      src/core/hle/service/sockets/bsd.cpp

19
src/core/hle/service/sockets/bsd.cpp

@ -978,19 +978,18 @@ std::variant<s32, Network::Errno> BSD_USA::DuplicateSocketImpl(s32 fd) {
if (!IsFileDescriptorValid(fd)) {
return Network::Errno::E_BADF;
}
const s32 new_fd = FindFreeFileDescriptorHandle();
if (!IsFileDescriptorValid(new_fd)) {
// Don't use IsFileDescriptorValid as new_fd isn't a proper handle yet
if (s32 const new_fd = FindFreeFileDescriptorHandle(); new_fd >= 0) {
file_descriptors[new_fd] = FileDescriptor{
.socket = file_descriptors[fd]->socket,
.flags = file_descriptors[fd]->flags,
.is_connection_based = file_descriptors[fd]->is_connection_based,
};
return new_fd;
} else {
LOG_ERROR(Service, "No more file descriptors available");
return Network::Errno::E_MFILE;
}
file_descriptors[new_fd] = FileDescriptor{
.socket = file_descriptors[fd]->socket,
.flags = file_descriptors[fd]->flags,
.is_connection_based = file_descriptors[fd]->is_connection_based,
};
return new_fd;
}
std::optional<std::shared_ptr<Network::SocketBase>> BSD_USA::GetSocket(s32 fd) {

Loading…
Cancel
Save