mirror of https://github.com/OpenTTD/OpenTTD
(svn r15987) -Fix: make the master socket only listen on the IP the server is bound to.
parent
9c814d64f4
commit
08e37a6f10
|
@ -587,7 +587,7 @@ static void NetworkClose()
|
||||||
_listensockets.Clear();
|
_listensockets.Clear();
|
||||||
DEBUG(net, 1, "Closed listener");
|
DEBUG(net, 1, "Closed listener");
|
||||||
}
|
}
|
||||||
NetworkUDPCloseAll();
|
NetworkUDPClose();
|
||||||
|
|
||||||
TCPConnecter::KillAll();
|
TCPConnecter::KillAll();
|
||||||
|
|
||||||
|
@ -606,6 +606,7 @@ static void NetworkClose()
|
||||||
static void NetworkInitialize()
|
static void NetworkInitialize()
|
||||||
{
|
{
|
||||||
InitializeNetworkPools();
|
InitializeNetworkPools();
|
||||||
|
NetworkUDPInitialize();
|
||||||
|
|
||||||
_sync_frame = 0;
|
_sync_frame = 0;
|
||||||
_network_first_time = true;
|
_network_first_time = true;
|
||||||
|
@ -743,6 +744,7 @@ bool NetworkServerStart()
|
||||||
IConsoleCmdExec("exec scripts/pre_server.scr 0");
|
IConsoleCmdExec("exec scripts/pre_server.scr 0");
|
||||||
if (_network_dedicated) IConsoleCmdExec("exec scripts/pre_dedicated.scr 0");
|
if (_network_dedicated) IConsoleCmdExec("exec scripts/pre_dedicated.scr 0");
|
||||||
|
|
||||||
|
NetworkDisconnect();
|
||||||
NetworkInitialize();
|
NetworkInitialize();
|
||||||
if (!NetworkListen()) return false;
|
if (!NetworkListen()) return false;
|
||||||
|
|
||||||
|
@ -1077,7 +1079,6 @@ void NetworkStartUp()
|
||||||
|
|
||||||
memset(&_network_game_info, 0, sizeof(_network_game_info));
|
memset(&_network_game_info, 0, sizeof(_network_game_info));
|
||||||
|
|
||||||
NetworkUDPInitialize();
|
|
||||||
NetworkInitialize();
|
NetworkInitialize();
|
||||||
DEBUG(net, 3, "[core] network online, multiplayer available");
|
DEBUG(net, 3, "[core] network online, multiplayer available");
|
||||||
NetworkFindBroadcastIPs(&_broadcast_list);
|
NetworkFindBroadcastIPs(&_broadcast_list);
|
||||||
|
@ -1087,7 +1088,6 @@ void NetworkStartUp()
|
||||||
void NetworkShutDown()
|
void NetworkShutDown()
|
||||||
{
|
{
|
||||||
NetworkDisconnect();
|
NetworkDisconnect();
|
||||||
NetworkUDPShutdown();
|
|
||||||
|
|
||||||
DEBUG(net, 3, "[core] shutting down network");
|
DEBUG(net, 3, "[core] shutting down network");
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,7 @@ protected:
|
||||||
DECLARE_UDP_RECEIVE_COMMAND(PACKET_UDP_MASTER_ACK_REGISTER);
|
DECLARE_UDP_RECEIVE_COMMAND(PACKET_UDP_MASTER_ACK_REGISTER);
|
||||||
DECLARE_UDP_RECEIVE_COMMAND(PACKET_UDP_MASTER_SESSION_KEY);
|
DECLARE_UDP_RECEIVE_COMMAND(PACKET_UDP_MASTER_SESSION_KEY);
|
||||||
public:
|
public:
|
||||||
|
MasterNetworkUDPSocketHandler(NetworkAddressList *addresses) : NetworkUDPSocketHandler(addresses) {}
|
||||||
virtual ~MasterNetworkUDPSocketHandler() {}
|
virtual ~MasterNetworkUDPSocketHandler() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -354,21 +355,6 @@ void ClientNetworkUDPSocketHandler::HandleIncomingNetworkGameInfoGRFConfig(GRFCo
|
||||||
SetBit(config->flags, GCF_COPY);
|
SetBit(config->flags, GCF_COPY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close UDP connection */
|
|
||||||
void NetworkUDPCloseAll()
|
|
||||||
{
|
|
||||||
DEBUG(net, 1, "[udp] closed listeners");
|
|
||||||
|
|
||||||
_network_udp_mutex->BeginCritical();
|
|
||||||
_udp_server_socket->Close();
|
|
||||||
_udp_master_socket->Close();
|
|
||||||
_udp_client_socket->Close();
|
|
||||||
_network_udp_mutex->EndCritical();
|
|
||||||
|
|
||||||
_network_udp_server = false;
|
|
||||||
_network_udp_broadcast = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Broadcast to all ips */
|
/* Broadcast to all ips */
|
||||||
static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket)
|
static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket)
|
||||||
{
|
{
|
||||||
|
@ -534,6 +520,7 @@ void NetworkUDPAdvertise()
|
||||||
|
|
||||||
void NetworkUDPInitialize()
|
void NetworkUDPInitialize()
|
||||||
{
|
{
|
||||||
|
DEBUG(net, 1, "[udp] initializing listeners");
|
||||||
assert(_udp_client_socket == NULL && _udp_server_socket == NULL && _udp_master_socket == NULL);
|
assert(_udp_client_socket == NULL && _udp_server_socket == NULL && _udp_master_socket == NULL);
|
||||||
|
|
||||||
_network_udp_mutex->BeginCritical();
|
_network_udp_mutex->BeginCritical();
|
||||||
|
@ -543,18 +530,23 @@ void NetworkUDPInitialize()
|
||||||
|
|
||||||
_udp_client_socket = new ClientNetworkUDPSocketHandler();
|
_udp_client_socket = new ClientNetworkUDPSocketHandler();
|
||||||
_udp_server_socket = new ServerNetworkUDPSocketHandler(&server);
|
_udp_server_socket = new ServerNetworkUDPSocketHandler(&server);
|
||||||
_udp_master_socket = new MasterNetworkUDPSocketHandler();
|
|
||||||
|
for (NetworkAddress *iter = server.Begin(); iter != server.End(); iter++) {
|
||||||
|
iter->SetPort(0);
|
||||||
|
}
|
||||||
|
_udp_master_socket = new MasterNetworkUDPSocketHandler(&server);
|
||||||
|
|
||||||
_network_udp_server = false;
|
_network_udp_server = false;
|
||||||
_network_udp_broadcast = 0;
|
_network_udp_broadcast = 0;
|
||||||
_network_udp_mutex->EndCritical();
|
_network_udp_mutex->EndCritical();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NetworkUDPShutdown()
|
void NetworkUDPClose()
|
||||||
{
|
{
|
||||||
NetworkUDPCloseAll();
|
|
||||||
|
|
||||||
_network_udp_mutex->BeginCritical();
|
_network_udp_mutex->BeginCritical();
|
||||||
|
_udp_server_socket->Close();
|
||||||
|
_udp_master_socket->Close();
|
||||||
|
_udp_client_socket->Close();
|
||||||
delete _udp_client_socket;
|
delete _udp_client_socket;
|
||||||
delete _udp_server_socket;
|
delete _udp_server_socket;
|
||||||
delete _udp_master_socket;
|
delete _udp_master_socket;
|
||||||
|
@ -562,6 +554,10 @@ void NetworkUDPShutdown()
|
||||||
_udp_server_socket = NULL;
|
_udp_server_socket = NULL;
|
||||||
_udp_master_socket = NULL;
|
_udp_master_socket = NULL;
|
||||||
_network_udp_mutex->EndCritical();
|
_network_udp_mutex->EndCritical();
|
||||||
|
|
||||||
|
_network_udp_server = false;
|
||||||
|
_network_udp_broadcast = 0;
|
||||||
|
DEBUG(net, 1, "[udp] closed listeners");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ENABLE_NETWORK */
|
#endif /* ENABLE_NETWORK */
|
||||||
|
|
|
@ -13,7 +13,7 @@ void NetworkUDPQueryMasterServer();
|
||||||
void NetworkUDPQueryServer(NetworkAddress address, bool manually = false);
|
void NetworkUDPQueryServer(NetworkAddress address, bool manually = false);
|
||||||
void NetworkUDPAdvertise();
|
void NetworkUDPAdvertise();
|
||||||
void NetworkUDPRemoveAdvertise();
|
void NetworkUDPRemoveAdvertise();
|
||||||
void NetworkUDPShutdown();
|
void NetworkUDPClose();
|
||||||
|
|
||||||
#endif /* ENABLE_NETWORK */
|
#endif /* ENABLE_NETWORK */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue