diff options
| -rw-r--r-- | src/core/hle/service/soc_u.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/core/hle/service/soc_u.cpp b/src/core/hle/service/soc_u.cpp index 1e0f5df9b..3f0c5e388 100644 --- a/src/core/hle/service/soc_u.cpp +++ b/src/core/hle/service/soc_u.cpp | |||
| @@ -469,11 +469,17 @@ static void GetHostId(Service::Interface* self) { | |||
| 469 | 469 | ||
| 470 | char name[128]; | 470 | char name[128]; |
| 471 | gethostname(name, sizeof(name)); | 471 | gethostname(name, sizeof(name)); |
| 472 | hostent* host = gethostbyname(name); | 472 | addrinfo hints = {}; |
| 473 | in_addr* addr = reinterpret_cast<in_addr*>(host->h_addr); | 473 | addrinfo* res; |
| 474 | |||
| 475 | hints.ai_family = AF_INET; | ||
| 476 | getaddrinfo(name, NULL, &hints, &res); | ||
| 477 | sockaddr_in* sock_addr = reinterpret_cast<sockaddr_in*>(res->ai_addr); | ||
| 478 | in_addr* addr = &sock_addr->sin_addr; | ||
| 474 | 479 | ||
| 475 | cmd_buffer[2] = addr->s_addr; | 480 | cmd_buffer[2] = addr->s_addr; |
| 476 | cmd_buffer[1] = 0; | 481 | cmd_buffer[1] = 0; |
| 482 | freeaddrinfo(res); | ||
| 477 | } | 483 | } |
| 478 | 484 | ||
| 479 | static void Close(Service::Interface* self) { | 485 | static void Close(Service::Interface* self) { |