mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-10-31 13:50:03 +00:00 
			
		
		
		
	service/soc_u: address review comments
This commit is contained in:
		
							parent
							
								
									08bf899d70
								
							
						
					
					
						commit
						1995e8ff32
					
				
					 2 changed files with 17 additions and 22 deletions
				
			
		|  | @ -10,6 +10,7 @@ | ||||||
| #include "common/common_types.h" | #include "common/common_types.h" | ||||||
| #include "common/logging/log.h" | #include "common/logging/log.h" | ||||||
| #include "common/scope_exit.h" | #include "common/scope_exit.h" | ||||||
|  | #include "common/swap.h" | ||||||
| #include "core/core.h" | #include "core/core.h" | ||||||
| #include "core/hle/ipc_helpers.h" | #include "core/hle/ipc_helpers.h" | ||||||
| #include "core/hle/kernel/shared_memory.h" | #include "core/hle/kernel/shared_memory.h" | ||||||
|  | @ -51,14 +52,6 @@ | ||||||
| #define closesocket(x) close(x) | #define closesocket(x) close(x) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
| // Some platforms seem to have these defined, they conflict with our function names
 |  | ||||||
| #ifdef GetAddrInfo |  | ||||||
| #undef GetAddrInfo |  | ||||||
| #endif |  | ||||||
| #ifdef GetNameInfo |  | ||||||
| #undef GetNameInfo |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| namespace Service::SOC { | namespace Service::SOC { | ||||||
| 
 | 
 | ||||||
| const s32 SOCKET_ERROR_VALUE = -1; | const s32 SOCKET_ERROR_VALUE = -1; | ||||||
|  | @ -329,18 +322,17 @@ union CTRSockAddr { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct CTRAddrInfo { | struct CTRAddrInfo { | ||||||
|     s32 ai_flags; |     s32_le ai_flags; | ||||||
|     s32 ai_family; |     s32_le ai_family; | ||||||
|     s32 ai_socktype; |     s32_le ai_socktype; | ||||||
|     s32 ai_protocol; |     s32_le ai_protocol; | ||||||
|     s32 ai_addrlen; |     s32_le ai_addrlen; | ||||||
|     char ai_canonname[256]; |     char ai_canonname[256]; | ||||||
|     CTRSockAddr ai_addr; |     CTRSockAddr ai_addr; | ||||||
| 
 | 
 | ||||||
|     /// Converts a platform-specific addrinfo to a 3ds addrinfo.
 |     /// Converts a platform-specific addrinfo to a 3ds addrinfo.
 | ||||||
|     static CTRAddrInfo FromPlatform(const addrinfo& addr) { |     static CTRAddrInfo FromPlatform(const addrinfo& addr) { | ||||||
|         CTRAddrInfo ctr_addr; |         CTRAddrInfo ctr_addr{}; | ||||||
|         std::memset(&ctr_addr, 0, sizeof(ctr_addr)); |  | ||||||
| 
 | 
 | ||||||
|         ctr_addr.ai_flags = addr.ai_flags; |         ctr_addr.ai_flags = addr.ai_flags; | ||||||
|         ctr_addr.ai_family = addr.ai_family; |         ctr_addr.ai_family = addr.ai_family; | ||||||
|  | @ -896,7 +888,7 @@ void SOC_U::SetSockOpt(Kernel::HLERequestContext& ctx) { | ||||||
|     rb.Push(err); |     rb.Push(err); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void SOC_U::GetAddrInfo(Kernel::HLERequestContext& ctx) { | void SOC_U::GetAddrInfoImpl(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::RequestParser rp(ctx, 0x0F, 4, 6); |     IPC::RequestParser rp(ctx, 0x0F, 4, 6); | ||||||
|     u32 node_length = rp.Pop<u32>(); |     u32 node_length = rp.Pop<u32>(); | ||||||
|     u32 service_length = rp.Pop<u32>(); |     u32 service_length = rp.Pop<u32>(); | ||||||
|  | @ -956,12 +948,12 @@ void SOC_U::GetAddrInfo(Kernel::HLERequestContext& ctx) { | ||||||
|     rb.PushStaticBuffer(out_buff, 0); |     rb.PushStaticBuffer(out_buff, 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void SOC_U::GetNameInfo(Kernel::HLERequestContext& ctx) { | void SOC_U::GetNameInfoImpl(Kernel::HLERequestContext& ctx) { | ||||||
|     IPC::RequestParser rp(ctx, 0x10, 4, 2); |     IPC::RequestParser rp(ctx, 0x10, 4, 2); | ||||||
|     u32 socklen = rp.Pop<u32>(); |     u32 socklen = rp.Pop<u32>(); | ||||||
|     u32 hostlen = rp.Pop<u32>(); |     u32 hostlen = rp.Pop<u32>(); | ||||||
|     u32 servlen = rp.Pop<u32>(); |     u32 servlen = rp.Pop<u32>(); | ||||||
|     int flags = static_cast<int>(rp.Pop<u32>()); |     s32 flags = rp.Pop<s32>(); | ||||||
|     auto sa_buff = rp.PopStaticBuffer(); |     auto sa_buff = rp.PopStaticBuffer(); | ||||||
| 
 | 
 | ||||||
|     CTRSockAddr ctr_sa; |     CTRSockAddr ctr_sa; | ||||||
|  | @ -1001,8 +993,8 @@ SOC_U::SOC_U() : ServiceFramework("soc:U") { | ||||||
|         {0x000C0082, &SOC_U::Shutdown, "Shutdown"}, |         {0x000C0082, &SOC_U::Shutdown, "Shutdown"}, | ||||||
|         {0x000D0082, nullptr, "GetHostByName"}, |         {0x000D0082, nullptr, "GetHostByName"}, | ||||||
|         {0x000E00C2, nullptr, "GetHostByAddr"}, |         {0x000E00C2, nullptr, "GetHostByAddr"}, | ||||||
|         {0x000F0106, &SOC_U::GetAddrInfo, "GetAddrInfo"}, |         {0x000F0106, &SOC_U::GetAddrInfoImpl, "GetAddrInfo"}, | ||||||
|         {0x00100102, &SOC_U::GetNameInfo, "GetNameInfo"}, |         {0x00100102, &SOC_U::GetNameInfoImpl, "GetNameInfo"}, | ||||||
|         {0x00110102, &SOC_U::GetSockOpt, "GetSockOpt"}, |         {0x00110102, &SOC_U::GetSockOpt, "GetSockOpt"}, | ||||||
|         {0x00120104, &SOC_U::SetSockOpt, "SetSockOpt"}, |         {0x00120104, &SOC_U::SetSockOpt, "SetSockOpt"}, | ||||||
|         {0x001300C2, &SOC_U::Fcntl, "Fcntl"}, |         {0x001300C2, &SOC_U::Fcntl, "Fcntl"}, | ||||||
|  |  | ||||||
|  | @ -44,8 +44,11 @@ private: | ||||||
|     void ShutdownSockets(Kernel::HLERequestContext& ctx); |     void ShutdownSockets(Kernel::HLERequestContext& ctx); | ||||||
|     void GetSockOpt(Kernel::HLERequestContext& ctx); |     void GetSockOpt(Kernel::HLERequestContext& ctx); | ||||||
|     void SetSockOpt(Kernel::HLERequestContext& ctx); |     void SetSockOpt(Kernel::HLERequestContext& ctx); | ||||||
|     void GetAddrInfo(Kernel::HLERequestContext& ctx); | 
 | ||||||
|     void GetNameInfo(Kernel::HLERequestContext& ctx); |     // Some platforms seem to have GetAddrInfo and GetNameInfo defined as macros,
 | ||||||
|  |     // so we have to use a different name here.
 | ||||||
|  |     void GetAddrInfoImpl(Kernel::HLERequestContext& ctx); | ||||||
|  |     void GetNameInfoImpl(Kernel::HLERequestContext& ctx); | ||||||
| 
 | 
 | ||||||
|     /// Close all open sockets
 |     /// Close all open sockets
 | ||||||
|     void CleanupSockets(); |     void CleanupSockets(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue