diff --git a/src/openrct2/Context.cpp b/src/openrct2/Context.cpp index 65e95c1d1e..4796c9e70d 100644 --- a/src/openrct2/Context.cpp +++ b/src/openrct2/Context.cpp @@ -345,6 +345,11 @@ namespace OpenRCT2 gNetworkStartPort = gConfigNetwork.default_port; } + if (String::IsNullOrEmpty(gNetworkStartAddress)) + { + gNetworkStartAddress = gConfigNetwork.listen_address; + } + if (String::IsNullOrEmpty(gCustomPassword)) { network_set_password(gConfigNetwork.default_password); @@ -353,7 +358,7 @@ namespace OpenRCT2 { network_set_password(gCustomPassword); } - network_begin_server(gNetworkStartPort); + network_begin_server(gNetworkStartPort, gNetworkStartAddress); } #endif // DISABLE_NETWORK break; diff --git a/src/openrct2/OpenRCT2.h b/src/openrct2/OpenRCT2.h index bf4150b6da..3d9810ddb6 100644 --- a/src/openrct2/OpenRCT2.h +++ b/src/openrct2/OpenRCT2.h @@ -67,6 +67,7 @@ extern "C" extern sint32 gNetworkStart; extern char gNetworkStartHost[128]; extern sint32 gNetworkStartPort; + extern char* gNetworkStartAddress; #endif void openrct2_write_full_version_info(utf8 * buffer, size_t bufferSize); diff --git a/src/openrct2/cmdline/RootCommands.cpp b/src/openrct2/cmdline/RootCommands.cpp index 43b35c89e1..2aa9243f17 100644 --- a/src/openrct2/cmdline/RootCommands.cpp +++ b/src/openrct2/cmdline/RootCommands.cpp @@ -44,8 +44,10 @@ extern "C" sint32 gNetworkStart = NETWORK_MODE_NONE; char gNetworkStartHost[128]; sint32 gNetworkStartPort = NETWORK_DEFAULT_PORT; +char* gNetworkStartAddress = nullptr; static uint32 _port = 0; +static char* _address = nullptr; #endif static bool _help = false; @@ -72,6 +74,7 @@ static const CommandLineOptionDefinition StandardOptions[] { CMDLINE_TYPE_SWITCH, &_headless, NAC, "headless", "run " OPENRCT2_NAME " headless" IMPLIES_SILENT_BREAKPAD }, #ifndef DISABLE_NETWORK { CMDLINE_TYPE_INTEGER, &_port, NAC, "port", "port to use for hosting or joining a server" }, + { CMDLINE_TYPE_STRING, &_address, NAC, "address", "address to listen on when hosting a server" }, #endif { CMDLINE_TYPE_STRING, &_password, NAC, "password", "password needed to join the server" }, { CMDLINE_TYPE_STRING, &_userDataPath, NAC, "user-data-path", "path to the user data directory (containing config.ini)" }, @@ -287,6 +290,8 @@ exitcode_t HandleCommandHost(CommandLineArgEnumerator * enumerator) gNetworkStart = NETWORK_MODE_SERVER; gNetworkStartPort = _port; + gNetworkStartAddress = _address; + return EXITCODE_CONTINUE; }