mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-20 04:59:11 +00:00
(svn r16014) -Feature(-ish): allow binding to several IPs; [network]:server_bind_ip doesn't exist anymore. Add the IPs/hostnames to [server_bind_addresses]
This commit is contained in:
@@ -55,6 +55,7 @@ ClientID _redirect_console_to_client;
|
||||
bool _network_need_advertise;
|
||||
uint32 _network_last_advertise_frame;
|
||||
uint8 _network_reconnect;
|
||||
StringList _network_bind_list;
|
||||
StringList _network_host_list;
|
||||
StringList _network_ban_list;
|
||||
uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
|
||||
@@ -542,9 +543,12 @@ static bool NetworkListen()
|
||||
{
|
||||
assert(_listensockets.Length() == 0);
|
||||
|
||||
NetworkAddress address(_settings_client.network.server_bind_ip, _settings_client.network.server_port);
|
||||
NetworkAddressList addresses;
|
||||
GetBindAddresses(&addresses, _settings_client.network.server_port);
|
||||
|
||||
address.Listen(SOCK_STREAM, &_listensockets);
|
||||
for (NetworkAddress *address = addresses.Begin(); address != addresses.End(); address++) {
|
||||
address->Listen(SOCK_STREAM, &_listensockets);
|
||||
}
|
||||
|
||||
if (_listensockets.Length() == 0) {
|
||||
ServerStartError("Could not create listening socket");
|
||||
@@ -664,6 +668,23 @@ void NetworkAddServer(const char *b)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the addresses to bind to.
|
||||
* @param addresses the list to write to.
|
||||
* @param port the port to bind to.
|
||||
*/
|
||||
void GetBindAddresses(NetworkAddressList *addresses, uint16 port)
|
||||
{
|
||||
for (char **iter = _network_bind_list.Begin(); iter != _network_bind_list.End(); iter++) {
|
||||
*addresses->Append() = NetworkAddress(*iter, port);
|
||||
}
|
||||
|
||||
/* No address, so bind to everything. */
|
||||
if (addresses->Length() == 0) {
|
||||
*addresses->Append() = NetworkAddress("", port);
|
||||
}
|
||||
}
|
||||
|
||||
/* Generates the list of manually added hosts from NetworkGameList and
|
||||
* dumps them into the array _network_host_list. This array is needed
|
||||
* by the function that generates the config file. */
|
||||
|
@@ -21,6 +21,7 @@ extern ClientID _redirect_console_to_client;
|
||||
extern bool _network_need_advertise;
|
||||
extern uint32 _network_last_advertise_frame;
|
||||
extern uint8 _network_reconnect;
|
||||
extern StringList _network_bind_list;
|
||||
extern StringList _network_host_list;
|
||||
extern StringList _network_ban_list;
|
||||
|
||||
|
@@ -123,6 +123,7 @@ extern CompanyMask _network_company_passworded;
|
||||
|
||||
void NetworkTCPQueryServer(NetworkAddress address);
|
||||
|
||||
void GetBindAddresses(NetworkAddressList *addresses, uint16 port);
|
||||
void NetworkAddServer(const char *b);
|
||||
void NetworkRebuildHostList();
|
||||
void UpdateNetworkGameWindow(bool unselect);
|
||||
|
@@ -546,15 +546,14 @@ void NetworkUDPInitialize()
|
||||
|
||||
_network_udp_mutex->BeginCritical();
|
||||
|
||||
NetworkAddressList server;
|
||||
*server.Append() = NetworkAddress(_settings_client.network.server_bind_ip, _settings_client.network.server_port);
|
||||
|
||||
_udp_client_socket = new ClientNetworkUDPSocketHandler();
|
||||
|
||||
NetworkAddressList server;
|
||||
GetBindAddresses(&server, _settings_client.network.server_port);
|
||||
_udp_server_socket = new ServerNetworkUDPSocketHandler(&server);
|
||||
|
||||
for (NetworkAddress *iter = server.Begin(); iter != server.End(); iter++) {
|
||||
iter->SetPort(0);
|
||||
}
|
||||
server.Clear();
|
||||
GetBindAddresses(&server, 0);
|
||||
_udp_master_socket = new MasterNetworkUDPSocketHandler(&server);
|
||||
|
||||
_network_udp_server = false;
|
||||
|
Reference in New Issue
Block a user