Fix
This commit is contained in:
parent
0fab0574b2
commit
0eda36b7a1
@ -102,33 +102,35 @@ namespace network
|
|||||||
// Rather than try and let the player in, just tell them they are a duplicate player and reject connection
|
// Rather than try and let the player in, just tell them they are a duplicate player and reject connection
|
||||||
game::NET_OutOfBandPrint(game::NS_SERVER, from, "error\nYou are already connected to the server.");
|
game::NET_OutOfBandPrint(game::NS_SERVER, from, "error\nYou are already connected to the server.");
|
||||||
}
|
}
|
||||||
SOCKET create_socket(const char* net_interface, int port, int protocol)
|
|
||||||
{
|
|
||||||
sockaddr_in address{};
|
|
||||||
|
|
||||||
if (net_interface && net_interface != "localhost"s)
|
SOCKET create_socket(const char* net_interface, int port, int protocol)
|
||||||
{
|
{
|
||||||
// Sys_StringToSockaddr
|
sockaddr_in address{};
|
||||||
utils::hook::invoke<void>(0x1404F6580, net_interface, &address);
|
|
||||||
|
if (net_interface && net_interface != "localhost"s)
|
||||||
|
{
|
||||||
|
// Sys_StringToSockaddr
|
||||||
|
utils::hook::invoke<void>(0x1404F6580, net_interface, &address);
|
||||||
|
}
|
||||||
|
|
||||||
|
address.sin_family = AF_INET;
|
||||||
|
address.sin_port = ntohs(port);
|
||||||
|
|
||||||
|
const auto sock = ::socket(AF_INET, SOCK_DGRAM, protocol);
|
||||||
|
|
||||||
|
u_long arg = 1;
|
||||||
|
ioctlsocket(sock, FIONBIO, &arg);
|
||||||
|
char optval[4] = { 1 };
|
||||||
|
setsockopt(sock, 0xFFFF, 32, optval, 4);
|
||||||
|
|
||||||
|
if (bind(sock, reinterpret_cast<sockaddr*>(&address), sizeof(address)) != -1)
|
||||||
|
{
|
||||||
|
return sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
closesocket(sock);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
address.sin_family = AF_INET;
|
|
||||||
address.sin_port = ntohs(port);
|
|
||||||
|
|
||||||
const auto sock = ::socket(AF_INET, SOCK_DGRAM, protocol);
|
|
||||||
|
|
||||||
u_long arg = 1;
|
|
||||||
ioctlsocket(sock, FIONBIO, &arg);
|
|
||||||
char optval[4] = {1};
|
|
||||||
setsockopt(sock, 0xFFFF, 32, optval, 4);
|
|
||||||
|
|
||||||
if (bind(sock, reinterpret_cast<sockaddr*>(&address), sizeof(address)) != -1)
|
|
||||||
{
|
|
||||||
return sock;
|
|
||||||
}
|
|
||||||
|
|
||||||
closesocket(sock);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void on(const std::string& command, const callback& callback)
|
void on(const std::string& command, const callback& callback)
|
||||||
|
Loading…
Reference in New Issue
Block a user