mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 02:34:11 +01:00 
			
		
		
		
	Fixes:
- Add missing virtual destructor on `SSLBackend`. - On Windows, filter out `POLLWRBAND` (one of the new flags added) when calling `WSAPoll`, because despite the constant being defined on Windows, passing it calls `WSAPoll` to yield `EINVAL`. - Reduce OpenSSL version requirement to satisfy CI; I haven't tested whether it actually builds (or runs) against 1.1.1, but if not, I'll figure it out. - Change an instance of memcpy to memmove, even though the arguments cannot overlap, to avoid a [strange GCC error](https://github.com/yuzu-emu/yuzu/pull/10912#issuecomment-1606283351).
This commit is contained in:
		
							parent
							
								
									8905142f43
								
							
						
					
					
						commit
						4a35569921
					
				| @ -325,7 +325,7 @@ if (MINGW) | ||||
| endif() | ||||
| 
 | ||||
| if(ENABLE_OPENSSL) | ||||
|     find_package(OpenSSL 3.0.0 REQUIRED) | ||||
|     find_package(OpenSSL 1.1.1 REQUIRED) | ||||
| endif() | ||||
| 
 | ||||
| # Please consider this as a stub | ||||
|  | ||||
| @ -96,7 +96,7 @@ static void Append(std::vector<u8>& vec, T t) { | ||||
| static void AppendNulTerminated(std::vector<u8>& vec, std::string_view str) { | ||||
|     size_t off = vec.size(); | ||||
|     vec.resize(off + str.size() + 1); | ||||
|     std::memcpy(vec.data() + off, str.data(), str.size()); | ||||
|     std::memmove(vec.data() + off, str.data(), str.size()); | ||||
| } | ||||
| 
 | ||||
| // We implement gethostbyname using the host's getaddrinfo rather than the
 | ||||
|  | ||||
| @ -31,6 +31,7 @@ constexpr Result ResultWouldBlock{ErrorModule::SSLSrv, 204}; | ||||
| 
 | ||||
| class SSLConnectionBackend { | ||||
| public: | ||||
|     virtual ~SSLConnectionBackend() {} | ||||
|     virtual void SetSocket(std::shared_ptr<Network::SocketBase> socket) = 0; | ||||
|     virtual Result SetHostName(const std::string& hostname) = 0; | ||||
|     virtual Result DoHandshake() = 0; | ||||
|  | ||||
| @ -97,6 +97,8 @@ bool EnableNonBlock(SOCKET fd, bool enable) { | ||||
| 
 | ||||
| Errno TranslateNativeError(int e) { | ||||
|     switch (e) { | ||||
|     case 0: | ||||
|         return Errno::SUCCESS; | ||||
|     case WSAEBADF: | ||||
|         return Errno::BADF; | ||||
|     case WSAEINVAL: | ||||
| @ -421,9 +423,14 @@ short TranslatePollEvents(PollEvents events) { | ||||
|     translate(PollEvents::WrBand, POLLWRBAND); | ||||
| 
 | ||||
| #ifdef _WIN32 | ||||
|     if (True(events & PollEvents::Pri)) { | ||||
|         LOG_WARNING(Service, "Winsock doesn't support POLLPRI"); | ||||
|     short allowed_events = POLLRDBAND | POLLRDNORM | POLLWRNORM; | ||||
|     // Unlike poll on other OSes, WSAPoll will complain if any other flags are set on input.
 | ||||
|     if (result & ~allowed_events) { | ||||
|         LOG_DEBUG(Network, | ||||
|                   "Removing WSAPoll input events 0x{:x} because Windows doesn't support them", | ||||
|                   result & ~allowed_events); | ||||
|     } | ||||
|     result &= allowed_events; | ||||
| #endif | ||||
| 
 | ||||
|     UNIMPLEMENTED_IF_MSG((u16)events != 0, "Unhandled guest events=0x{:x}", (u16)events); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user