mirror of
				https://git.tardis.systems/mirrors/yuzu
				synced 2025-10-31 02:34:11 +01:00 
			
		
		
		
	internal_network: only poll for accept on blocking sockets
This commit is contained in:
		
							parent
							
								
									8ddfecfbae
								
							
						
					
					
						commit
						5510b31972
					
				| @ -693,6 +693,8 @@ std::pair<SocketBase::AcceptResult, Errno> Socket::Accept() { | ||||
|     sockaddr_in addr; | ||||
|     socklen_t addrlen = sizeof(addr); | ||||
| 
 | ||||
|     const bool wait_for_accept = !is_non_blocking; | ||||
|     if (wait_for_accept) { | ||||
|         std::vector<WSAPOLLFD> host_pollfds{ | ||||
|             WSAPOLLFD{fd, POLLIN, 0}, | ||||
|             WSAPOLLFD{GetInterruptSocket(), POLLIN, 0}, | ||||
| @ -709,6 +711,7 @@ std::pair<SocketBase::AcceptResult, Errno> Socket::Accept() { | ||||
|                 break; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     const SOCKET new_socket = accept(fd, reinterpret_cast<sockaddr*>(&addr), &addrlen); | ||||
| 
 | ||||
| @ -913,6 +916,7 @@ Errno Socket::SetRcvTimeo(u32 value) { | ||||
| 
 | ||||
| Errno Socket::SetNonBlock(bool enable) { | ||||
|     if (EnableNonBlock(fd, enable)) { | ||||
|         is_non_blocking = enable; | ||||
|         return Errno::SUCCESS; | ||||
|     } | ||||
|     return GetAndLogLastError(); | ||||
|  | ||||
| @ -166,6 +166,9 @@ public: | ||||
|     bool IsOpened() const override; | ||||
| 
 | ||||
|     void HandleProxyPacket(const ProxyPacket& packet) override; | ||||
| 
 | ||||
| private: | ||||
|     bool is_non_blocking = false; | ||||
| }; | ||||
| 
 | ||||
| std::pair<s32, Errno> Poll(std::vector<PollFD>& poll_fds, s32 timeout); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user