clean up
This commit is contained in:
@@ -74,41 +74,6 @@ int g_MultiplayerPort = NETWORK_LAN_DEFAULT_PORT;
|
||||
char g_MultiplayerIP[256] = "127.0.0.1";
|
||||
#endif
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
static int GetLocalIPv4Interfaces(SOCKET socketHandle, struct in_addr *localAddresses,
|
||||
struct in_addr *broadcastAddresses, int capacity)
|
||||
{
|
||||
INTERFACE_INFO interfaceList[32];
|
||||
DWORD bytesReturned = 0;
|
||||
if(WSAIoctl(socketHandle, SIO_GET_INTERFACE_LIST, NULL, 0, interfaceList,
|
||||
sizeof(interfaceList), &bytesReturned, NULL, NULL) == SOCKET_ERROR)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int interfaceCount = (int)(bytesReturned / sizeof(INTERFACE_INFO));
|
||||
int resultCount = 0;
|
||||
for(int i = 0; i < interfaceCount && resultCount < capacity; ++i)
|
||||
{
|
||||
struct sockaddr_in *address = (struct sockaddr_in *)&interfaceList[i].iiAddress;
|
||||
struct sockaddr_in *netmask = (struct sockaddr_in *)&interfaceList[i].iiNetmask;
|
||||
if(address->sin_family != AF_INET)
|
||||
continue;
|
||||
|
||||
unsigned long hostAddress = ntohl(address->sin_addr.s_addr);
|
||||
unsigned long hostNetmask = ntohl(netmask->sin_addr.s_addr);
|
||||
if(hostAddress == 0 || (hostAddress & 0xff000000) == 0x7f000000 || hostNetmask == 0)
|
||||
continue;
|
||||
|
||||
localAddresses[resultCount] = address->sin_addr;
|
||||
broadcastAddresses[resultCount].s_addr = htonl(hostAddress | ~hostNetmask);
|
||||
++resultCount;
|
||||
}
|
||||
|
||||
return resultCount;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool NetworkSocketLayer::Initialize()
|
||||
{
|
||||
if (s_initialized) return true;
|
||||
@@ -1253,31 +1218,8 @@ int NetworkSocketLayer::AdvertiseThreadProc(LPVOID param)
|
||||
data.gameHostSettings = htonl(data.gameHostSettings);
|
||||
data.texturePackParentId = htonl(data.texturePackParentId);
|
||||
|
||||
int sent = -1;
|
||||
|
||||
#ifdef _WINDOWS64
|
||||
struct in_addr localAddresses[32];
|
||||
struct in_addr broadcastAddresses[32];
|
||||
int interfaceCount = GetLocalIPv4Interfaces(s_advertiseSock, localAddresses, broadcastAddresses, 32); // this is bad fyi and needs to be replaced
|
||||
for(int i = 0; i < interfaceCount; ++i)
|
||||
{
|
||||
broadcastAddr.sin_addr = broadcastAddresses[i];
|
||||
int interfaceSent = sendto(s_advertiseSock, (const char *)&data, sizeof(data), 0,
|
||||
(struct sockaddr *)&broadcastAddr, sizeof(broadcastAddr));
|
||||
if(interfaceSent != SOCKET_ERROR)
|
||||
sent = interfaceSent;
|
||||
}
|
||||
|
||||
if(interfaceCount == 0)
|
||||
{
|
||||
broadcastAddr.sin_addr.s_addr = INADDR_BROADCAST;
|
||||
sent = sendto(s_advertiseSock, (const char *)&data, sizeof(data), 0,
|
||||
(struct sockaddr *)&broadcastAddr, sizeof(broadcastAddr));
|
||||
}
|
||||
#else
|
||||
sent = sendto(s_advertiseSock, (const char *)&data, sizeof(data), 0,
|
||||
int sent = sendto(s_advertiseSock, (const char *)&data, sizeof(data), 0,
|
||||
(struct sockaddr *)&broadcastAddr, sizeof(broadcastAddr));
|
||||
#endif
|
||||
|
||||
#if defined _WINDOWS64 || defined _XBOX
|
||||
if (sent == SOCKET_ERROR && s_advertising)
|
||||
@@ -1289,7 +1231,7 @@ int NetworkSocketLayer::AdvertiseThreadProc(LPVOID param)
|
||||
{
|
||||
app.DebugPrintf("PS3 LAN: Broadcast sendto failed: %d\n", sent);
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
C4JThread::Sleep(1000);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user