diff options
Diffstat (limited to 'src/net')
-rw-r--r-- | src/net/ea/network.cpp | 20 | ||||
-rw-r--r-- | src/net/serverinfo.h | 4 |
2 files changed, 17 insertions, 7 deletions
diff --git a/src/net/ea/network.cpp b/src/net/ea/network.cpp index 2b9c048f7..085901743 100644 --- a/src/net/ea/network.cpp +++ b/src/net/ea/network.cpp @@ -105,6 +105,7 @@ bool Network::connect(ServerInfo server) server.hostname.c_str(), server.port); mServer.hostname = server.hostname; + mServer.althostname = server.althostname; mServer.port = server.port; // Reset to sane values @@ -190,13 +191,18 @@ bool Network::realConnect() if (TcpNet::resolveHost(&ipAddress, mServer.hostname.c_str(), mServer.port) == -1) { - const std::string errorMessage = std::string( - // TRANSLATORS: error message - _("Unable to resolve host \"")).append( - mServer.hostname).append("\""); - setError(errorMessage); - logger->log("TcpNet::ResolveHost: %s", errorMessage.c_str()); - return false; + if (mServer.althostname.empty() || TcpNet::resolveHost(&ipAddress, + mServer.althostname.c_str(), mServer.port) == -1) + { + const std::string errorMessage = std::string( + // TRANSLATORS: error message + _("Unable to resolve host \"")).append( + mServer.hostname).append("\""); + setError(errorMessage); + logger->log("TcpNet::ResolveHost: %s", errorMessage.c_str()); + return false; + } + logger->log("using alt host name: %s", mServer.althostname.c_str()); } mState = CONNECTING; diff --git a/src/net/serverinfo.h b/src/net/serverinfo.h index df7a854e7..515595f1f 100644 --- a/src/net/serverinfo.h +++ b/src/net/serverinfo.h @@ -49,6 +49,7 @@ public: Type type; std::string name; std::string hostname; + std::string althostname; uint16_t port; std::string description; @@ -62,6 +63,7 @@ public: type(TMWATHENA), name(), hostname(), + althostname(), port(6901), description(), registerUrl(), @@ -76,6 +78,7 @@ public: type(info.type), name(info.name), hostname(info.hostname), + althostname(info.althostname), port(info.port), description(info.description), registerUrl(info.registerUrl), @@ -97,6 +100,7 @@ public: type = UNKNOWN; name.clear(); hostname.clear(); + althostname.clear(); port = 0; description.clear(); registerUrl.clear(); |