summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/sockets/sfdnsres.cpp2
-rw-r--r--src/core/hle/service/ssl/ssl_backend.h1
-rw-r--r--src/core/internal_network/network.cpp13
3 files changed, 12 insertions, 4 deletions
diff --git a/src/core/hle/service/sockets/sfdnsres.cpp b/src/core/hle/service/sockets/sfdnsres.cpp
index 1196fb86c..fb8798b42 100644
--- a/src/core/hle/service/sockets/sfdnsres.cpp
+++ b/src/core/hle/service/sockets/sfdnsres.cpp
@@ -96,7 +96,7 @@ static void Append(std::vector<u8>& vec, T t) {
96static void AppendNulTerminated(std::vector<u8>& vec, std::string_view str) { 96static void AppendNulTerminated(std::vector<u8>& vec, std::string_view str) {
97 size_t off = vec.size(); 97 size_t off = vec.size();
98 vec.resize(off + str.size() + 1); 98 vec.resize(off + str.size() + 1);
99 std::memcpy(vec.data() + off, str.data(), str.size()); 99 std::memmove(vec.data() + off, str.data(), str.size());
100} 100}
101 101
102// We implement gethostbyname using the host's getaddrinfo rather than the 102// We implement gethostbyname using the host's getaddrinfo rather than the
diff --git a/src/core/hle/service/ssl/ssl_backend.h b/src/core/hle/service/ssl/ssl_backend.h
index 624e07d41..0dd8d9118 100644
--- a/src/core/hle/service/ssl/ssl_backend.h
+++ b/src/core/hle/service/ssl/ssl_backend.h
@@ -31,6 +31,7 @@ constexpr Result ResultWouldBlock{ErrorModule::SSLSrv, 204};
31 31
32class SSLConnectionBackend { 32class SSLConnectionBackend {
33public: 33public:
34 virtual ~SSLConnectionBackend() {}
34 virtual void SetSocket(std::shared_ptr<Network::SocketBase> socket) = 0; 35 virtual void SetSocket(std::shared_ptr<Network::SocketBase> socket) = 0;
35 virtual Result SetHostName(const std::string& hostname) = 0; 36 virtual Result SetHostName(const std::string& hostname) = 0;
36 virtual Result DoHandshake() = 0; 37 virtual Result DoHandshake() = 0;
diff --git a/src/core/internal_network/network.cpp b/src/core/internal_network/network.cpp
index 39381e06e..0164d12eb 100644
--- a/src/core/internal_network/network.cpp
+++ b/src/core/internal_network/network.cpp
@@ -97,6 +97,8 @@ bool EnableNonBlock(SOCKET fd, bool enable) {
97 97
98Errno TranslateNativeError(int e) { 98Errno TranslateNativeError(int e) {
99 switch (e) { 99 switch (e) {
100 case 0:
101 return Errno::SUCCESS;
100 case WSAEBADF: 102 case WSAEBADF:
101 return Errno::BADF; 103 return Errno::BADF;
102 case WSAEINVAL: 104 case WSAEINVAL:
@@ -421,9 +423,14 @@ short TranslatePollEvents(PollEvents events) {
421 translate(PollEvents::WrBand, POLLWRBAND); 423 translate(PollEvents::WrBand, POLLWRBAND);
422 424
423#ifdef _WIN32 425#ifdef _WIN32
424 if (True(events & PollEvents::Pri)) { 426 short allowed_events = POLLRDBAND | POLLRDNORM | POLLWRNORM;
425 LOG_WARNING(Service, "Winsock doesn't support POLLPRI"); 427 // Unlike poll on other OSes, WSAPoll will complain if any other flags are set on input.
426 } 428 if (result & ~allowed_events) {
429 LOG_DEBUG(Network,
430 "Removing WSAPoll input events 0x{:x} because Windows doesn't support them",
431 result & ~allowed_events);
432 }
433 result &= allowed_events;
427#endif 434#endif
428 435
429 UNIMPLEMENTED_IF_MSG((u16)events != 0, "Unhandled guest events=0x{:x}", (u16)events); 436 UNIMPLEMENTED_IF_MSG((u16)events != 0, "Unhandled guest events=0x{:x}", (u16)events);