diff --git a/libretro-common/net/net_compat.c b/libretro-common/net/net_compat.c index 1a2d9eac58..7ef476c4f0 100644 --- a/libretro-common/net/net_compat.c +++ b/libretro-common/net/net_compat.c @@ -21,15 +21,61 @@ */ #include +#include #include #include +#include #include #include #include #include -#if defined(VITA) +#if defined(_XBOX) +/* TODO - implement h_length and h_addrtype */ +struct hostent +{ + int h_addrtype; /* host address type */ + int h_length; /* length of addresses */ + char **h_addr_list; /* list of addresses */ +}; + +struct hostent *gethostbyname(const char *name) +{ + WSAEVENT event; + static struct hostent he; + static struct in_addr addr; + static char *addr_ptr; + XNDNS *dns = NULL; + + he.h_addr_list = &addr_ptr; + addr_ptr = (char*)&addr; + + if (!name) + return NULL; + + event = WSACreateEvent(); + XNetDnsLookup(name, event, &dns); + if (!dns) + goto error; + + WaitForSingleObject((HANDLE)event, INFINITE); + if (dns->iStatus) + goto error; + + memcpy(&addr, dns->aina, sizeof(addr)); + + WSACloseEvent(event); + XNetDnsRelease(dns); + + return &he; + +error: + if (event) + WSACloseEvent(event); + return NULL; +} +#elif defined(VITA) static void *_net_compat_net_memory = NULL; #define COMPAT_NET_INIT_SIZE 512*1024 #define INET_ADDRSTRLEN sizeof(struct sockaddr_in) diff --git a/netplay/netplay.c b/netplay/netplay.c index 72de3f3cca..bc99c971b5 100644 --- a/netplay/netplay.c +++ b/netplay/netplay.c @@ -1167,69 +1167,3 @@ bool netplay_driver_ctl(enum rarch_netplay_ctl_state state, void *data) return false; } -/* /!\ WARNING: POTENTIAL PITFALL - - netplay.c does something naughty and undefines - sockaddr_storage and addrinfo. This is disastrous - for griffin builds. - - TODO: put this somewhere safer. - */ -#ifdef HAVE_SOCKET_LEGACY - -#undef sockaddr_storage -#undef addrinfo - -#include -#include -#include - -#define addrinfo addrinfo_retro__ - -#ifdef _XBOX -/* TODO - implement h_length and h_addrtype */ -struct hostent -{ - int h_addrtype; /* host address type */ - int h_length; /* length of addresses */ - char **h_addr_list; /* list of addresses */ -}; - -static struct hostent *gethostbyname(const char *name) -{ - WSAEVENT event; - static struct hostent he; - static struct in_addr addr; - static char *addr_ptr; - XNDNS *dns = NULL; - - he.h_addr_list = &addr_ptr; - addr_ptr = (char*)&addr; - - if (!name) - return NULL; - - event = WSACreateEvent(); - XNetDnsLookup(name, event, &dns); - if (!dns) - goto error; - - WaitForSingleObject((HANDLE)event, INFINITE); - if (dns->iStatus) - goto error; - - memcpy(&addr, dns->aina, sizeof(addr)); - - WSACloseEvent(event); - XNetDnsRelease(dns); - - return &he; - -error: - if (event) - WSACloseEvent(event); - return NULL; -} -#endif - -#endif