diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/hle/service/sockets/blocking_worker.h | 7 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/bsd.cpp | 7 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/sockets_translate.cpp | 24 |
3 files changed, 19 insertions, 19 deletions
diff --git a/src/core/hle/service/sockets/blocking_worker.h b/src/core/hle/service/sockets/blocking_worker.h index 31ef6b821..2d53e52b6 100644 --- a/src/core/hle/service/sockets/blocking_worker.h +++ b/src/core/hle/service/sockets/blocking_worker.h | |||
| @@ -29,7 +29,7 @@ namespace Service::Sockets { | |||
| 29 | * Worker abstraction to execute blocking calls on host without blocking the guest thread | 29 | * Worker abstraction to execute blocking calls on host without blocking the guest thread |
| 30 | * | 30 | * |
| 31 | * @tparam Service Service where the work is executed | 31 | * @tparam Service Service where the work is executed |
| 32 | * @tparam ...Types Types of work to execute | 32 | * @tparam Types Types of work to execute |
| 33 | */ | 33 | */ |
| 34 | template <class Service, class... Types> | 34 | template <class Service, class... Types> |
| 35 | class BlockingWorker { | 35 | class BlockingWorker { |
| @@ -109,9 +109,8 @@ private: | |||
| 109 | while (keep_running) { | 109 | while (keep_running) { |
| 110 | work_event.Wait(); | 110 | work_event.Wait(); |
| 111 | 111 | ||
| 112 | const auto visit_fn = [service, &keep_running](auto&& w) { | 112 | const auto visit_fn = [service, &keep_running]<typename T>(T&& w) { |
| 113 | using T = std::decay_t<decltype(w)>; | 113 | if constexpr (std::is_same_v<std::decay_t<T>, std::monostate>) { |
| 114 | if constexpr (std::is_same_v<T, std::monostate>) { | ||
| 115 | keep_running = false; | 114 | keep_running = false; |
| 116 | } else { | 115 | } else { |
| 117 | w.Execute(service); | 116 | w.Execute(service); |
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index 803505452..7b9dd42d8 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp | |||
| @@ -491,7 +491,7 @@ std::pair<s32, Errno> BSD::PollImpl(std::vector<u8>& write_buffer, std::vector<u | |||
| 491 | for (PollFD& pollfd : fds) { | 491 | for (PollFD& pollfd : fds) { |
| 492 | ASSERT(pollfd.revents == 0); | 492 | ASSERT(pollfd.revents == 0); |
| 493 | 493 | ||
| 494 | if (pollfd.fd > MAX_FD || pollfd.fd < 0) { | 494 | if (pollfd.fd > static_cast<s32>(MAX_FD) || pollfd.fd < 0) { |
| 495 | LOG_ERROR(Service, "File descriptor handle={} is invalid", pollfd.fd); | 495 | LOG_ERROR(Service, "File descriptor handle={} is invalid", pollfd.fd); |
| 496 | pollfd.revents = 0; | 496 | pollfd.revents = 0; |
| 497 | return {0, Errno::SUCCESS}; | 497 | return {0, Errno::SUCCESS}; |
| @@ -764,6 +764,7 @@ std::pair<s32, Errno> BSD::SendToImpl(s32 fd, u32 flags, const std::vector<u8>& | |||
| 764 | SockAddrIn guest_addr_in; | 764 | SockAddrIn guest_addr_in; |
| 765 | std::memcpy(&guest_addr_in, addr.data(), sizeof(guest_addr_in)); | 765 | std::memcpy(&guest_addr_in, addr.data(), sizeof(guest_addr_in)); |
| 766 | addr_in = Translate(guest_addr_in); | 766 | addr_in = Translate(guest_addr_in); |
| 767 | p_addr_in = &addr_in; | ||
| 767 | } | 768 | } |
| 768 | 769 | ||
| 769 | return Translate(file_descriptors[fd]->socket->SendTo(flags, message, p_addr_in)); | 770 | return Translate(file_descriptors[fd]->socket->SendTo(flags, message, p_addr_in)); |
| @@ -795,7 +796,7 @@ s32 BSD::FindFreeFileDescriptorHandle() noexcept { | |||
| 795 | } | 796 | } |
| 796 | 797 | ||
| 797 | bool BSD::IsFileDescriptorValid(s32 fd) const noexcept { | 798 | bool BSD::IsFileDescriptorValid(s32 fd) const noexcept { |
| 798 | if (fd > MAX_FD || fd < 0) { | 799 | if (fd > static_cast<s32>(MAX_FD) || fd < 0) { |
| 799 | LOG_ERROR(Service, "Invalid file descriptor handle={}", fd); | 800 | LOG_ERROR(Service, "Invalid file descriptor handle={}", fd); |
| 800 | return false; | 801 | return false; |
| 801 | } | 802 | } |
| @@ -809,7 +810,7 @@ bool BSD::IsFileDescriptorValid(s32 fd) const noexcept { | |||
| 809 | bool BSD::IsBlockingSocket(s32 fd) const noexcept { | 810 | bool BSD::IsBlockingSocket(s32 fd) const noexcept { |
| 810 | // Inform invalid sockets as non-blocking | 811 | // Inform invalid sockets as non-blocking |
| 811 | // This way we avoid using a worker thread as it will fail without blocking host | 812 | // This way we avoid using a worker thread as it will fail without blocking host |
| 812 | if (fd > MAX_FD || fd < 0) { | 813 | if (fd > static_cast<s32>(MAX_FD) || fd < 0) { |
| 813 | return false; | 814 | return false; |
| 814 | } | 815 | } |
| 815 | if (!file_descriptors[fd]) { | 816 | if (!file_descriptors[fd]) { |
diff --git a/src/core/hle/service/sockets/sockets_translate.cpp b/src/core/hle/service/sockets/sockets_translate.cpp index 2be8f642d..139743e1d 100644 --- a/src/core/hle/service/sockets/sockets_translate.cpp +++ b/src/core/hle/service/sockets/sockets_translate.cpp | |||
| @@ -131,21 +131,21 @@ u16 TranslatePollEventsToGuest(u16 flags) { | |||
| 131 | Network::SockAddrIn Translate(SockAddrIn value) { | 131 | Network::SockAddrIn Translate(SockAddrIn value) { |
| 132 | ASSERT(value.len == 0 || value.len == sizeof(value)); | 132 | ASSERT(value.len == 0 || value.len == sizeof(value)); |
| 133 | 133 | ||
| 134 | Network::SockAddrIn result; | 134 | return { |
| 135 | result.family = Translate(static_cast<Domain>(value.family)); | 135 | .family = Translate(static_cast<Domain>(value.family)), |
| 136 | result.ip = value.ip; | 136 | .ip = value.ip, |
| 137 | result.portno = value.portno >> 8 | value.portno << 8; | 137 | .portno = static_cast<u16>(value.portno >> 8 | value.portno << 8), |
| 138 | return result; | 138 | }; |
| 139 | } | 139 | } |
| 140 | 140 | ||
| 141 | SockAddrIn Translate(Network::SockAddrIn value) { | 141 | SockAddrIn Translate(Network::SockAddrIn value) { |
| 142 | SockAddrIn result; | 142 | return { |
| 143 | result.len = sizeof(result); | 143 | .len = sizeof(SockAddrIn), |
| 144 | result.family = static_cast<u8>(Translate(value.family)); | 144 | .family = static_cast<u8>(Translate(value.family)), |
| 145 | result.portno = value.portno >> 8 | value.portno << 8; | 145 | .portno = static_cast<u16>(value.portno >> 8 | value.portno << 8), |
| 146 | result.ip = value.ip; | 146 | .ip = value.ip, |
| 147 | result.zeroes = {}; | 147 | .zeroes = {}, |
| 148 | return result; | 148 | }; |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | Network::ShutdownHow Translate(ShutdownHow how) { | 151 | Network::ShutdownHow Translate(ShutdownHow how) { |