diff options
Diffstat (limited to '')
| -rw-r--r-- | src/core/hle/service/sockets/bsd.cpp | 29 | ||||
| -rw-r--r-- | src/core/hle/service/sockets/bsd.h | 23 | ||||
| -rw-r--r-- | src/core/internal_network/network.cpp | 4 | ||||
| -rw-r--r-- | src/core/internal_network/socket_proxy.cpp | 4 | ||||
| -rw-r--r-- | src/core/internal_network/socket_proxy.h | 5 | ||||
| -rw-r--r-- | src/core/internal_network/sockets.h | 9 |
6 files changed, 38 insertions, 36 deletions
diff --git a/src/core/hle/service/sockets/bsd.cpp b/src/core/hle/service/sockets/bsd.cpp index 9e94a462f..119d6ba5b 100644 --- a/src/core/hle/service/sockets/bsd.cpp +++ b/src/core/hle/service/sockets/bsd.cpp | |||
| @@ -186,7 +186,7 @@ void BSD::Poll(Kernel::HLERequestContext& ctx) { | |||
| 186 | ExecuteWork(ctx, PollWork{ | 186 | ExecuteWork(ctx, PollWork{ |
| 187 | .nfds = nfds, | 187 | .nfds = nfds, |
| 188 | .timeout = timeout, | 188 | .timeout = timeout, |
| 189 | .read_buffer = ctx.ReadBuffer(), | 189 | .read_buffer = ctx.ReadBufferSpan(), |
| 190 | .write_buffer = std::vector<u8>(ctx.GetWriteBufferSize()), | 190 | .write_buffer = std::vector<u8>(ctx.GetWriteBufferSize()), |
| 191 | }); | 191 | }); |
| 192 | } | 192 | } |
| @@ -208,8 +208,7 @@ void BSD::Bind(Kernel::HLERequestContext& ctx) { | |||
| 208 | const s32 fd = rp.Pop<s32>(); | 208 | const s32 fd = rp.Pop<s32>(); |
| 209 | 209 | ||
| 210 | LOG_DEBUG(Service, "called. fd={} addrlen={}", fd, ctx.GetReadBufferSize()); | 210 | LOG_DEBUG(Service, "called. fd={} addrlen={}", fd, ctx.GetReadBufferSize()); |
| 211 | 211 | BuildErrnoResponse(ctx, BindImpl(fd, ctx.ReadBufferSpan())); | |
| 212 | BuildErrnoResponse(ctx, BindImpl(fd, ctx.ReadBuffer())); | ||
| 213 | } | 212 | } |
| 214 | 213 | ||
| 215 | void BSD::Connect(Kernel::HLERequestContext& ctx) { | 214 | void BSD::Connect(Kernel::HLERequestContext& ctx) { |
| @@ -220,7 +219,7 @@ void BSD::Connect(Kernel::HLERequestContext& ctx) { | |||
| 220 | 219 | ||
| 221 | ExecuteWork(ctx, ConnectWork{ | 220 | ExecuteWork(ctx, ConnectWork{ |
| 222 | .fd = fd, | 221 | .fd = fd, |
| 223 | .addr = ctx.ReadBuffer(), | 222 | .addr = ctx.ReadBufferSpan(), |
| 224 | }); | 223 | }); |
| 225 | } | 224 | } |
| 226 | 225 | ||
| @@ -312,7 +311,7 @@ void BSD::SetSockOpt(Kernel::HLERequestContext& ctx) { | |||
| 312 | const u32 level = rp.Pop<u32>(); | 311 | const u32 level = rp.Pop<u32>(); |
| 313 | const OptName optname = static_cast<OptName>(rp.Pop<u32>()); | 312 | const OptName optname = static_cast<OptName>(rp.Pop<u32>()); |
| 314 | 313 | ||
| 315 | const std::vector<u8> buffer = ctx.ReadBuffer(); | 314 | const auto buffer = ctx.ReadBufferSpan(); |
| 316 | const u8* optval = buffer.empty() ? nullptr : buffer.data(); | 315 | const u8* optval = buffer.empty() ? nullptr : buffer.data(); |
| 317 | size_t optlen = buffer.size(); | 316 | size_t optlen = buffer.size(); |
| 318 | 317 | ||
| @@ -383,7 +382,7 @@ void BSD::Send(Kernel::HLERequestContext& ctx) { | |||
| 383 | ExecuteWork(ctx, SendWork{ | 382 | ExecuteWork(ctx, SendWork{ |
| 384 | .fd = fd, | 383 | .fd = fd, |
| 385 | .flags = flags, | 384 | .flags = flags, |
| 386 | .message = ctx.ReadBuffer(), | 385 | .message = ctx.ReadBufferSpan(), |
| 387 | }); | 386 | }); |
| 388 | } | 387 | } |
| 389 | 388 | ||
| @@ -398,8 +397,8 @@ void BSD::SendTo(Kernel::HLERequestContext& ctx) { | |||
| 398 | ExecuteWork(ctx, SendToWork{ | 397 | ExecuteWork(ctx, SendToWork{ |
| 399 | .fd = fd, | 398 | .fd = fd, |
| 400 | .flags = flags, | 399 | .flags = flags, |
| 401 | .message = ctx.ReadBuffer(0), | 400 | .message = ctx.ReadBufferSpan(0), |
| 402 | .addr = ctx.ReadBuffer(1), | 401 | .addr = ctx.ReadBufferSpan(1), |
| 403 | }); | 402 | }); |
| 404 | } | 403 | } |
| 405 | 404 | ||
| @@ -412,7 +411,7 @@ void BSD::Write(Kernel::HLERequestContext& ctx) { | |||
| 412 | ExecuteWork(ctx, SendWork{ | 411 | ExecuteWork(ctx, SendWork{ |
| 413 | .fd = fd, | 412 | .fd = fd, |
| 414 | .flags = 0, | 413 | .flags = 0, |
| 415 | .message = ctx.ReadBuffer(), | 414 | .message = ctx.ReadBufferSpan(), |
| 416 | }); | 415 | }); |
| 417 | } | 416 | } |
| 418 | 417 | ||
| @@ -489,7 +488,7 @@ std::pair<s32, Errno> BSD::SocketImpl(Domain domain, Type type, Protocol protoco | |||
| 489 | return {fd, Errno::SUCCESS}; | 488 | return {fd, Errno::SUCCESS}; |
| 490 | } | 489 | } |
| 491 | 490 | ||
| 492 | std::pair<s32, Errno> BSD::PollImpl(std::vector<u8>& write_buffer, std::vector<u8> read_buffer, | 491 | std::pair<s32, Errno> BSD::PollImpl(std::vector<u8>& write_buffer, std::span<const u8> read_buffer, |
| 493 | s32 nfds, s32 timeout) { | 492 | s32 nfds, s32 timeout) { |
| 494 | if (write_buffer.size() < nfds * sizeof(PollFD)) { | 493 | if (write_buffer.size() < nfds * sizeof(PollFD)) { |
| 495 | return {-1, Errno::INVAL}; | 494 | return {-1, Errno::INVAL}; |
| @@ -584,7 +583,7 @@ std::pair<s32, Errno> BSD::AcceptImpl(s32 fd, std::vector<u8>& write_buffer) { | |||
| 584 | return {new_fd, Errno::SUCCESS}; | 583 | return {new_fd, Errno::SUCCESS}; |
| 585 | } | 584 | } |
| 586 | 585 | ||
| 587 | Errno BSD::BindImpl(s32 fd, const std::vector<u8>& addr) { | 586 | Errno BSD::BindImpl(s32 fd, std::span<const u8> addr) { |
| 588 | if (!IsFileDescriptorValid(fd)) { | 587 | if (!IsFileDescriptorValid(fd)) { |
| 589 | return Errno::BADF; | 588 | return Errno::BADF; |
| 590 | } | 589 | } |
| @@ -595,7 +594,7 @@ Errno BSD::BindImpl(s32 fd, const std::vector<u8>& addr) { | |||
| 595 | return Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in))); | 594 | return Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in))); |
| 596 | } | 595 | } |
| 597 | 596 | ||
| 598 | Errno BSD::ConnectImpl(s32 fd, const std::vector<u8>& addr) { | 597 | Errno BSD::ConnectImpl(s32 fd, std::span<const u8> addr) { |
| 599 | if (!IsFileDescriptorValid(fd)) { | 598 | if (!IsFileDescriptorValid(fd)) { |
| 600 | return Errno::BADF; | 599 | return Errno::BADF; |
| 601 | } | 600 | } |
| @@ -800,15 +799,15 @@ std::pair<s32, Errno> BSD::RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& mess | |||
| 800 | return {ret, bsd_errno}; | 799 | return {ret, bsd_errno}; |
| 801 | } | 800 | } |
| 802 | 801 | ||
| 803 | std::pair<s32, Errno> BSD::SendImpl(s32 fd, u32 flags, const std::vector<u8>& message) { | 802 | std::pair<s32, Errno> BSD::SendImpl(s32 fd, u32 flags, std::span<const u8> message) { |
| 804 | if (!IsFileDescriptorValid(fd)) { | 803 | if (!IsFileDescriptorValid(fd)) { |
| 805 | return {-1, Errno::BADF}; | 804 | return {-1, Errno::BADF}; |
| 806 | } | 805 | } |
| 807 | return Translate(file_descriptors[fd]->socket->Send(message, flags)); | 806 | return Translate(file_descriptors[fd]->socket->Send(message, flags)); |
| 808 | } | 807 | } |
| 809 | 808 | ||
| 810 | std::pair<s32, Errno> BSD::SendToImpl(s32 fd, u32 flags, const std::vector<u8>& message, | 809 | std::pair<s32, Errno> BSD::SendToImpl(s32 fd, u32 flags, std::span<const u8> message, |
| 811 | const std::vector<u8>& addr) { | 810 | std::span<const u8> addr) { |
| 812 | if (!IsFileDescriptorValid(fd)) { | 811 | if (!IsFileDescriptorValid(fd)) { |
| 813 | return {-1, Errno::BADF}; | 812 | return {-1, Errno::BADF}; |
| 814 | } | 813 | } |
diff --git a/src/core/hle/service/sockets/bsd.h b/src/core/hle/service/sockets/bsd.h index 81e855e0f..56bb3f8b1 100644 --- a/src/core/hle/service/sockets/bsd.h +++ b/src/core/hle/service/sockets/bsd.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #pragma once | 4 | #pragma once |
| 5 | 5 | ||
| 6 | #include <memory> | 6 | #include <memory> |
| 7 | #include <span> | ||
| 7 | #include <vector> | 8 | #include <vector> |
| 8 | 9 | ||
| 9 | #include "common/common_types.h" | 10 | #include "common/common_types.h" |
| @@ -44,7 +45,7 @@ private: | |||
| 44 | 45 | ||
| 45 | s32 nfds; | 46 | s32 nfds; |
| 46 | s32 timeout; | 47 | s32 timeout; |
| 47 | std::vector<u8> read_buffer; | 48 | std::span<const u8> read_buffer; |
| 48 | std::vector<u8> write_buffer; | 49 | std::vector<u8> write_buffer; |
| 49 | s32 ret{}; | 50 | s32 ret{}; |
| 50 | Errno bsd_errno{}; | 51 | Errno bsd_errno{}; |
| @@ -65,7 +66,7 @@ private: | |||
| 65 | void Response(Kernel::HLERequestContext& ctx); | 66 | void Response(Kernel::HLERequestContext& ctx); |
| 66 | 67 | ||
| 67 | s32 fd; | 68 | s32 fd; |
| 68 | std::vector<u8> addr; | 69 | std::span<const u8> addr; |
| 69 | Errno bsd_errno{}; | 70 | Errno bsd_errno{}; |
| 70 | }; | 71 | }; |
| 71 | 72 | ||
| @@ -98,7 +99,7 @@ private: | |||
| 98 | 99 | ||
| 99 | s32 fd; | 100 | s32 fd; |
| 100 | u32 flags; | 101 | u32 flags; |
| 101 | std::vector<u8> message; | 102 | std::span<const u8> message; |
| 102 | s32 ret{}; | 103 | s32 ret{}; |
| 103 | Errno bsd_errno{}; | 104 | Errno bsd_errno{}; |
| 104 | }; | 105 | }; |
| @@ -109,8 +110,8 @@ private: | |||
| 109 | 110 | ||
| 110 | s32 fd; | 111 | s32 fd; |
| 111 | u32 flags; | 112 | u32 flags; |
| 112 | std::vector<u8> message; | 113 | std::span<const u8> message; |
| 113 | std::vector<u8> addr; | 114 | std::span<const u8> addr; |
| 114 | s32 ret{}; | 115 | s32 ret{}; |
| 115 | Errno bsd_errno{}; | 116 | Errno bsd_errno{}; |
| 116 | }; | 117 | }; |
| @@ -143,11 +144,11 @@ private: | |||
| 143 | void ExecuteWork(Kernel::HLERequestContext& ctx, Work work); | 144 | void ExecuteWork(Kernel::HLERequestContext& ctx, Work work); |
| 144 | 145 | ||
| 145 | std::pair<s32, Errno> SocketImpl(Domain domain, Type type, Protocol protocol); | 146 | std::pair<s32, Errno> SocketImpl(Domain domain, Type type, Protocol protocol); |
| 146 | std::pair<s32, Errno> PollImpl(std::vector<u8>& write_buffer, std::vector<u8> read_buffer, | 147 | std::pair<s32, Errno> PollImpl(std::vector<u8>& write_buffer, std::span<const u8> read_buffer, |
| 147 | s32 nfds, s32 timeout); | 148 | s32 nfds, s32 timeout); |
| 148 | std::pair<s32, Errno> AcceptImpl(s32 fd, std::vector<u8>& write_buffer); | 149 | std::pair<s32, Errno> AcceptImpl(s32 fd, std::vector<u8>& write_buffer); |
| 149 | Errno BindImpl(s32 fd, const std::vector<u8>& addr); | 150 | Errno BindImpl(s32 fd, std::span<const u8> addr); |
| 150 | Errno ConnectImpl(s32 fd, const std::vector<u8>& addr); | 151 | Errno ConnectImpl(s32 fd, std::span<const u8> addr); |
| 151 | Errno GetPeerNameImpl(s32 fd, std::vector<u8>& write_buffer); | 152 | Errno GetPeerNameImpl(s32 fd, std::vector<u8>& write_buffer); |
| 152 | Errno GetSockNameImpl(s32 fd, std::vector<u8>& write_buffer); | 153 | Errno GetSockNameImpl(s32 fd, std::vector<u8>& write_buffer); |
| 153 | Errno ListenImpl(s32 fd, s32 backlog); | 154 | Errno ListenImpl(s32 fd, s32 backlog); |
| @@ -157,9 +158,9 @@ private: | |||
| 157 | std::pair<s32, Errno> RecvImpl(s32 fd, u32 flags, std::vector<u8>& message); | 158 | std::pair<s32, Errno> RecvImpl(s32 fd, u32 flags, std::vector<u8>& message); |
| 158 | std::pair<s32, Errno> RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& message, | 159 | std::pair<s32, Errno> RecvFromImpl(s32 fd, u32 flags, std::vector<u8>& message, |
| 159 | std::vector<u8>& addr); | 160 | std::vector<u8>& addr); |
| 160 | std::pair<s32, Errno> SendImpl(s32 fd, u32 flags, const std::vector<u8>& message); | 161 | std::pair<s32, Errno> SendImpl(s32 fd, u32 flags, std::span<const u8> message); |
| 161 | std::pair<s32, Errno> SendToImpl(s32 fd, u32 flags, const std::vector<u8>& message, | 162 | std::pair<s32, Errno> SendToImpl(s32 fd, u32 flags, std::span<const u8> message, |
| 162 | const std::vector<u8>& addr); | 163 | std::span<const u8> addr); |
| 163 | Errno CloseImpl(s32 fd); | 164 | Errno CloseImpl(s32 fd); |
| 164 | 165 | ||
| 165 | s32 FindFreeFileDescriptorHandle() noexcept; | 166 | s32 FindFreeFileDescriptorHandle() noexcept; |
diff --git a/src/core/internal_network/network.cpp b/src/core/internal_network/network.cpp index 447fbffaa..452212964 100644 --- a/src/core/internal_network/network.cpp +++ b/src/core/internal_network/network.cpp | |||
| @@ -546,7 +546,7 @@ std::pair<s32, Errno> Socket::RecvFrom(int flags, std::vector<u8>& message, Sock | |||
| 546 | return {-1, GetAndLogLastError()}; | 546 | return {-1, GetAndLogLastError()}; |
| 547 | } | 547 | } |
| 548 | 548 | ||
| 549 | std::pair<s32, Errno> Socket::Send(const std::vector<u8>& message, int flags) { | 549 | std::pair<s32, Errno> Socket::Send(std::span<const u8> message, int flags) { |
| 550 | ASSERT(message.size() < static_cast<size_t>(std::numeric_limits<int>::max())); | 550 | ASSERT(message.size() < static_cast<size_t>(std::numeric_limits<int>::max())); |
| 551 | ASSERT(flags == 0); | 551 | ASSERT(flags == 0); |
| 552 | 552 | ||
| @@ -559,7 +559,7 @@ std::pair<s32, Errno> Socket::Send(const std::vector<u8>& message, int flags) { | |||
| 559 | return {-1, GetAndLogLastError()}; | 559 | return {-1, GetAndLogLastError()}; |
| 560 | } | 560 | } |
| 561 | 561 | ||
| 562 | std::pair<s32, Errno> Socket::SendTo(u32 flags, const std::vector<u8>& message, | 562 | std::pair<s32, Errno> Socket::SendTo(u32 flags, std::span<const u8> message, |
| 563 | const SockAddrIn* addr) { | 563 | const SockAddrIn* addr) { |
| 564 | ASSERT(flags == 0); | 564 | ASSERT(flags == 0); |
| 565 | 565 | ||
diff --git a/src/core/internal_network/socket_proxy.cpp b/src/core/internal_network/socket_proxy.cpp index 1e1c42cea..7a77171c2 100644 --- a/src/core/internal_network/socket_proxy.cpp +++ b/src/core/internal_network/socket_proxy.cpp | |||
| @@ -182,7 +182,7 @@ std::pair<s32, Errno> ProxySocket::ReceivePacket(int flags, std::vector<u8>& mes | |||
| 182 | return {static_cast<u32>(read_bytes), Errno::SUCCESS}; | 182 | return {static_cast<u32>(read_bytes), Errno::SUCCESS}; |
| 183 | } | 183 | } |
| 184 | 184 | ||
| 185 | std::pair<s32, Errno> ProxySocket::Send(const std::vector<u8>& message, int flags) { | 185 | std::pair<s32, Errno> ProxySocket::Send(std::span<const u8> message, int flags) { |
| 186 | LOG_WARNING(Network, "(STUBBED) called"); | 186 | LOG_WARNING(Network, "(STUBBED) called"); |
| 187 | ASSERT(message.size() < static_cast<size_t>(std::numeric_limits<int>::max())); | 187 | ASSERT(message.size() < static_cast<size_t>(std::numeric_limits<int>::max())); |
| 188 | ASSERT(flags == 0); | 188 | ASSERT(flags == 0); |
| @@ -200,7 +200,7 @@ void ProxySocket::SendPacket(ProxyPacket& packet) { | |||
| 200 | } | 200 | } |
| 201 | } | 201 | } |
| 202 | 202 | ||
| 203 | std::pair<s32, Errno> ProxySocket::SendTo(u32 flags, const std::vector<u8>& message, | 203 | std::pair<s32, Errno> ProxySocket::SendTo(u32 flags, std::span<const u8> message, |
| 204 | const SockAddrIn* addr) { | 204 | const SockAddrIn* addr) { |
| 205 | ASSERT(flags == 0); | 205 | ASSERT(flags == 0); |
| 206 | 206 | ||
diff --git a/src/core/internal_network/socket_proxy.h b/src/core/internal_network/socket_proxy.h index f12b5f567..9421492bc 100644 --- a/src/core/internal_network/socket_proxy.h +++ b/src/core/internal_network/socket_proxy.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | #pragma once | 4 | #pragma once |
| 5 | 5 | ||
| 6 | #include <mutex> | 6 | #include <mutex> |
| 7 | #include <span> | ||
| 7 | #include <vector> | 8 | #include <vector> |
| 8 | #include <queue> | 9 | #include <queue> |
| 9 | 10 | ||
| @@ -48,11 +49,11 @@ public: | |||
| 48 | std::pair<s32, Errno> ReceivePacket(int flags, std::vector<u8>& message, SockAddrIn* addr, | 49 | std::pair<s32, Errno> ReceivePacket(int flags, std::vector<u8>& message, SockAddrIn* addr, |
| 49 | std::size_t max_length); | 50 | std::size_t max_length); |
| 50 | 51 | ||
| 51 | std::pair<s32, Errno> Send(const std::vector<u8>& message, int flags) override; | 52 | std::pair<s32, Errno> Send(std::span<const u8> message, int flags) override; |
| 52 | 53 | ||
| 53 | void SendPacket(ProxyPacket& packet); | 54 | void SendPacket(ProxyPacket& packet); |
| 54 | 55 | ||
| 55 | std::pair<s32, Errno> SendTo(u32 flags, const std::vector<u8>& message, | 56 | std::pair<s32, Errno> SendTo(u32 flags, std::span<const u8> message, |
| 56 | const SockAddrIn* addr) override; | 57 | const SockAddrIn* addr) override; |
| 57 | 58 | ||
| 58 | Errno SetLinger(bool enable, u32 linger) override; | 59 | Errno SetLinger(bool enable, u32 linger) override; |
diff --git a/src/core/internal_network/sockets.h b/src/core/internal_network/sockets.h index 2e328c645..4c7489258 100644 --- a/src/core/internal_network/sockets.h +++ b/src/core/internal_network/sockets.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | 5 | ||
| 6 | #include <map> | 6 | #include <map> |
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <span> | ||
| 8 | #include <utility> | 9 | #include <utility> |
| 9 | 10 | ||
| 10 | #if defined(_WIN32) | 11 | #if defined(_WIN32) |
| @@ -66,9 +67,9 @@ public: | |||
| 66 | virtual std::pair<s32, Errno> RecvFrom(int flags, std::vector<u8>& message, | 67 | virtual std::pair<s32, Errno> RecvFrom(int flags, std::vector<u8>& message, |
| 67 | SockAddrIn* addr) = 0; | 68 | SockAddrIn* addr) = 0; |
| 68 | 69 | ||
| 69 | virtual std::pair<s32, Errno> Send(const std::vector<u8>& message, int flags) = 0; | 70 | virtual std::pair<s32, Errno> Send(std::span<const u8> message, int flags) = 0; |
| 70 | 71 | ||
| 71 | virtual std::pair<s32, Errno> SendTo(u32 flags, const std::vector<u8>& message, | 72 | virtual std::pair<s32, Errno> SendTo(u32 flags, std::span<const u8> message, |
| 72 | const SockAddrIn* addr) = 0; | 73 | const SockAddrIn* addr) = 0; |
| 73 | 74 | ||
| 74 | virtual Errno SetLinger(bool enable, u32 linger) = 0; | 75 | virtual Errno SetLinger(bool enable, u32 linger) = 0; |
| @@ -138,9 +139,9 @@ public: | |||
| 138 | 139 | ||
| 139 | std::pair<s32, Errno> RecvFrom(int flags, std::vector<u8>& message, SockAddrIn* addr) override; | 140 | std::pair<s32, Errno> RecvFrom(int flags, std::vector<u8>& message, SockAddrIn* addr) override; |
| 140 | 141 | ||
| 141 | std::pair<s32, Errno> Send(const std::vector<u8>& message, int flags) override; | 142 | std::pair<s32, Errno> Send(std::span<const u8> message, int flags) override; |
| 142 | 143 | ||
| 143 | std::pair<s32, Errno> SendTo(u32 flags, const std::vector<u8>& message, | 144 | std::pair<s32, Errno> SendTo(u32 flags, std::span<const u8> message, |
| 144 | const SockAddrIn* addr) override; | 145 | const SockAddrIn* addr) override; |
| 145 | 146 | ||
| 146 | Errno SetLinger(bool enable, u32 linger) override; | 147 | Errno SetLinger(bool enable, u32 linger) override; |