clean up
This commit is contained in:
1 parent
83a62db82a
commit
b67d9d2094
1 file changed
+2
-60
@@ -74,41 +74,6 @@ int g_MultiplayerPort = NETWORK_LAN_DEFAULT_PORT;
|
|||||||
char g_MultiplayerIP[256] = "127.0.0.1";
|
char g_MultiplayerIP[256] = "127.0.0.1";
|
||||||
#endif
|
#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()
|
bool NetworkSocketLayer::Initialize()
|
||||||
{
|
{
|
||||||
if (s_initialized) return true;
|
if (s_initialized) return true;
|
||||||
@@ -1253,31 +1218,8 @@ int NetworkSocketLayer::AdvertiseThreadProc(LPVOID param)
|
|||||||
data.gameHostSettings = htonl(data.gameHostSettings);
|
data.gameHostSettings = htonl(data.gameHostSettings);
|
||||||
data.texturePackParentId = htonl(data.texturePackParentId);
|
data.texturePackParentId = htonl(data.texturePackParentId);
|
||||||
|
|
||||||
int sent = -1;
|
int sent = sendto(s_advertiseSock, (const char *)&data, sizeof(data), 0,
|
||||||
|
|
||||||
#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,
|
|
||||||
(struct sockaddr *)&broadcastAddr, sizeof(broadcastAddr));
|
(struct sockaddr *)&broadcastAddr, sizeof(broadcastAddr));
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined _WINDOWS64 || defined _XBOX
|
#if defined _WINDOWS64 || defined _XBOX
|
||||||
if (sent == SOCKET_ERROR && s_advertising)
|
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);
|
app.DebugPrintf("PS3 LAN: Broadcast sendto failed: %d\n", sent);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
C4JThread::Sleep(1000);
|
C4JThread::Sleep(1000);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user