summaryrefslogtreecommitdiff
path: root/src/network/network.cpp
diff options
context:
space:
mode:
authorPatric Stout <truebrain@openttd.org>2021-04-26 15:18:10 +0200
committerPatric Stout <github@truebrain.nl>2021-04-27 20:18:53 +0200
commitcb2ef1ea4b74c3d73ba86d978c001784d398bf27 (patch)
tree347ae80dcbb00bda1fe7cf3d12643ea46236db70 /src/network/network.cpp
parent8fa53f543a5929bdbb12c8776ae9577594f9eba7 (diff)
downloadopenttd-cb2ef1ea4b74c3d73ba86d978c001784d398bf27.tar.xz
Codechange: move all NetworkGameInfo related functions to a single file
It currently was a bit scattered over the place. Part of NetworkGameInfo is also the GRF Identifiers that goes with it.
Diffstat (limited to 'src/network/network.cpp')
-rw-r--r--src/network/network.cpp81
1 files changed, 4 insertions, 77 deletions
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 812456b4e..9a45ce06e 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -54,7 +54,6 @@ bool _network_server; ///< network-server is active
bool _network_available; ///< is network mode available?
bool _network_dedicated; ///< are we a dedicated server?
bool _is_network_server; ///< Does this client wants to be a network-server?
-NetworkServerGameInfo _network_game_info; ///< Information about our game.
NetworkCompanyState *_network_company_states = nullptr; ///< Statistics about some companies.
ClientID _network_own_client_id; ///< Our client identifier.
ClientID _redirect_console_to_client; ///< If not invalid, redirect the console output to a client.
@@ -603,9 +602,10 @@ public:
}
};
-/* Query a server to fetch his game-info
- * If game_info is true, only the gameinfo is fetched,
- * else only the client_info is fetched */
+/**
+ * Query a server to fetch his game-info.
+ * @param address the address to query.
+ */
void NetworkTCPQueryServer(NetworkAddress address)
{
if (!_network_available) return;
@@ -1110,79 +1110,6 @@ void NetworkShutDown()
NetworkCoreShutdown();
}
-/**
- * How many hex digits of the git hash to include in network revision string.
- * Determined as 10 hex digits + 2 characters for -g/-u/-m prefix.
- */
-static const uint GITHASH_SUFFIX_LEN = 12;
-
-/**
- * Get the network version string used by this build.
- * The returned string is guaranteed to be at most NETWORK_REVISON_LENGTH bytes.
- */
-const char * GetNetworkRevisionString()
-{
- /* This will be allocated on heap and never free'd, but only once so not a "real" leak. */
- static char *network_revision = nullptr;
-
- if (!network_revision) {
- /* Start by taking a chance on the full revision string. */
- network_revision = stredup(_openttd_revision);
- /* Ensure it's not longer than the packet buffer length. */
- if (strlen(network_revision) >= NETWORK_REVISION_LENGTH) network_revision[NETWORK_REVISION_LENGTH - 1] = '\0';
-
- /* Tag names are not mangled further. */
- if (_openttd_revision_tagged) {
- DEBUG(net, 1, "Network revision name is '%s'", network_revision);
- return network_revision;
- }
-
- /* Prepare a prefix of the git hash.
- * Size is length + 1 for terminator, +2 for -g prefix. */
- assert(_openttd_revision_modified < 3);
- char githash_suffix[GITHASH_SUFFIX_LEN + 1] = "-";
- githash_suffix[1] = "gum"[_openttd_revision_modified];
- for (uint i = 2; i < GITHASH_SUFFIX_LEN; i++) {
- githash_suffix[i] = _openttd_revision_hash[i-2];
- }
-
- /* Where did the hash start in the original string?
- * Overwrite from that position, unless that would go past end of packet buffer length. */
- ptrdiff_t hashofs = strrchr(_openttd_revision, '-') - _openttd_revision;
- if (hashofs + strlen(githash_suffix) + 1 > NETWORK_REVISION_LENGTH) hashofs = strlen(network_revision) - strlen(githash_suffix);
- /* Replace the git hash in revision string. */
- strecpy(network_revision + hashofs, githash_suffix, network_revision + NETWORK_REVISION_LENGTH);
- assert(strlen(network_revision) < NETWORK_REVISION_LENGTH); // strlen does not include terminator, constant does, hence strictly less than
- DEBUG(net, 1, "Network revision name is '%s'", network_revision);
- }
-
- return network_revision;
-}
-
-static const char *ExtractNetworkRevisionHash(const char *revstr)
-{
- return strrchr(revstr, '-');
-}
-
-/**
- * Checks whether the given version string is compatible with our version.
- * First tries to match the full string, if that fails, attempts to compare just git hashes.
- * @param other the version string to compare to
- */
-bool IsNetworkCompatibleVersion(const char *other)
-{
- if (strncmp(GetNetworkRevisionString(), other, NETWORK_REVISION_LENGTH - 1) == 0) return true;
-
- /* If this version is tagged, then the revision string must be a complete match,
- * since there is no git hash suffix in it.
- * This is needed to avoid situations like "1.9.0-beta1" comparing equal to "2.0.0-beta1". */
- if (_openttd_revision_tagged) return false;
-
- const char *hash1 = ExtractNetworkRevisionHash(GetNetworkRevisionString());
- const char *hash2 = ExtractNetworkRevisionHash(other);
- return hash1 && hash2 && (strncmp(hash1, hash2, GITHASH_SUFFIX_LEN) == 0);
-}
-
#ifdef __EMSCRIPTEN__
extern "C" {