summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/core/hle/service/sockets/blocking_worker.h7
-rw-r--r--src/core/hle/service/sockets/bsd.cpp7
-rw-r--r--src/core/hle/service/sockets/sockets_translate.cpp24
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 */
34template <class Service, class... Types> 34template <class Service, class... Types>
35class BlockingWorker { 35class 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
797bool BSD::IsFileDescriptorValid(s32 fd) const noexcept { 798bool 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 {
809bool BSD::IsBlockingSocket(s32 fd) const noexcept { 810bool 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) {
131Network::SockAddrIn Translate(SockAddrIn value) { 131Network::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
141SockAddrIn Translate(Network::SockAddrIn value) { 141SockAddrIn 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
151Network::ShutdownHow Translate(ShutdownHow how) { 151Network::ShutdownHow Translate(ShutdownHow how) {