diff options
| author | 2022-07-21 15:43:55 -0700 | |
|---|---|---|
| committer | 2022-07-21 15:43:55 -0700 | |
| commit | 6e36f4d230b4760ac8f8f4cd087e0d909fb97e40 (patch) | |
| tree | 64cf67d3e8210f4ae9227ac5fc698731ca16c81f | |
| parent | Merge pull request #8607 from lat9nq/sdl-2.0.20 (diff) | |
| parent | Enable the use of MSG_DONTWAIT flag on RecvImpl (diff) | |
| download | yuzu-6e36f4d230b4760ac8f8f4cd087e0d909fb97e40.tar.gz yuzu-6e36f4d230b4760ac8f8f4cd087e0d909fb97e40.tar.xz yuzu-6e36f4d230b4760ac8f8f4cd087e0d909fb97e40.zip | |
Merge pull request #8598 from Link4565/recv-dontwait
Enable the use of MSG_DONTWAIT flag on RecvImpl
| -rw-r--r-- | src/core/hle/service/sockets/bsd.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index 5114b8be2..3e9dc4a13 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp | |||
| @@ -720,7 +720,25 @@ std::pair<s32, Errno> BSD::RecvImpl(s32 fd, u32 flags, std::vector<u8>& message) | |||
| 720 | if (!IsFileDescriptorValid(fd)) { | 720 | if (!IsFileDescriptorValid(fd)) { |
| 721 | return {-1, Errno::BADF}; | 721 | return {-1, Errno::BADF}; |
| 722 | } | 722 | } |
| 723 | return Translate(file_descriptors[fd]->socket->Recv(flags, message)); | 723 | |
| 724 | FileDescriptor& descriptor = *file_descriptors[fd]; | ||
| 725 | |||
| 726 | // Apply flags | ||
| 727 | if ((flags & FLAG_MSG_DONTWAIT) != 0) { | ||
| 728 | flags &= ~FLAG_MSG_DONTWAIT; | ||
| 729 | if ((descriptor.flags & FLAG_O_NONBLOCK) == 0) { | ||
| 730 | descriptor.socket->SetNonBlock(true); | ||
| 731 | } | ||
| 732 | } | ||
| 733 | |||
| 734 | const auto [ret, bsd_errno] = Translate(descriptor.socket->Recv(flags, message)); | ||
| 735 | |||
| 736 | // Restore original state | ||
| 737 | if ((descriptor.flags & FLAG_O_NONBLOCK) == 0) { | ||
| 738 | descriptor.socket->SetNonBlock(false); | ||
| 739 | } | ||
| 740 | |||
| 741 | return {ret, bsd_errno}; | ||
| 724 | } | 742 | } |
| 725 | 743 | ||
| 726 | std::pair<s32, Errno> BSD::RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& message, | 744 | std::pair<s32, Errno> BSD::RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& message, |