diff options
Diffstat (limited to 'src')
| -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 d0e166fdf..d768a3fc7 100644 --- a/src/core/hle/service/soc_u.cpp +++ b/src/core/hle/service/soc_u.cpp | |||
| @@ -481,11 +481,17 @@ static void GetHostId(Service::Interface* self) { | |||
| 481 | 481 | ||
| 482 | char name[128]; | 482 | char name[128]; |
| 483 | gethostname(name, sizeof(name)); | 483 | gethostname(name, sizeof(name)); |
| 484 | hostent* host = gethostbyname(name); | 484 | addrinfo hints = {}; |
| 485 | in_addr* addr = reinterpret_cast<in_addr*>(host->h_addr); | 485 | addrinfo* res; |
| 486 | |||
| 487 | hints.ai_family = AF_INET; | ||
| 488 | getaddrinfo(name, NULL, &hints, &res); | ||
| 489 | sockaddr_in* sock_addr = reinterpret_cast<sockaddr_in*>(res->ai_addr); | ||
| 490 | in_addr* addr = &sock_addr->sin_addr; | ||
| 486 | 491 | ||
| 487 | cmd_buffer[2] = addr->s_addr; | 492 | cmd_buffer[2] = addr->s_addr; |
| 488 | cmd_buffer[1] = 0; | 493 | cmd_buffer[1] = 0; |
| 494 | freeaddrinfo(res); | ||
| 489 | } | 495 | } |
| 490 | 496 | ||
| 491 | static void Close(Service::Interface* self) { | 497 | static void Close(Service::Interface* self) { |