mirror of
https://github.com/vcmi/vcmi.git
synced 2025-03-29 21:56:54 +02:00
Use correct address to decide whether we're connecting to a remote server or a local one
This commit is contained in:
parent
b58cca7770
commit
c8f1512a3f
client
@ -252,27 +252,33 @@ void CServerHandler::justConnectToServer(const std::string & addr, const ui16 po
|
|||||||
{
|
{
|
||||||
state = EClientState::CONNECTING;
|
state = EClientState::CONNECTING;
|
||||||
|
|
||||||
logNetwork->info("Establishing connection...");
|
logNetwork->info("justConnectToServer(%s, %d)", addr, port);
|
||||||
|
|
||||||
|
std::string hostAddressFromSettings = getHostAddressFromSettings();
|
||||||
|
ui16 hostPortFromSettings = getHostPortFromSettings();
|
||||||
|
|
||||||
|
logNetwork->info("Host settings %s:%d", hostAddressFromSettings, hostPortFromSettings);
|
||||||
|
|
||||||
std::string hostAddress = getHostAddress();
|
std::string connectionAddress = addr.size() ? addr : hostAddressFromSettings;
|
||||||
ui16 hostPort = getHostPort();
|
ui16 connectionPort = port ? port : hostPortFromSettings;
|
||||||
|
|
||||||
boost::chrono::duration<long, boost::ratio<1, 1000>> sleepDuration{};
|
boost::chrono::duration<long, boost::ratio<1, 1000>> sleepDuration{};
|
||||||
int maxConnectionAttempts;
|
int maxConnectionAttempts;
|
||||||
|
|
||||||
if(hostAddress == "127.0.0.1" || hostAddress == "localhost")
|
if(connectionAddress == "127.0.0.1" || connectionAddress == "localhost")
|
||||||
{
|
{
|
||||||
|
logNetwork->info("Local server");
|
||||||
sleepDuration = boost::chrono::milliseconds(10);
|
sleepDuration = boost::chrono::milliseconds(10);
|
||||||
maxConnectionAttempts = 1000;
|
maxConnectionAttempts = 1000;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// remote server
|
logNetwork->info("Remote server");
|
||||||
sleepDuration = boost::chrono::seconds(2);
|
sleepDuration = boost::chrono::seconds(2);
|
||||||
maxConnectionAttempts = 10;
|
maxConnectionAttempts = 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
logNetwork->info("\nWaiting for %d ms between each of the %d attempts to connect", sleepDuration.count(), maxConnectionAttempts);
|
logNetwork->info("Waiting for %d ms between each of the %d attempts to connect", sleepDuration.count(), maxConnectionAttempts);
|
||||||
|
|
||||||
ui16 connectionAttemptCount = 0;
|
ui16 connectionAttemptCount = 0;
|
||||||
while(!c && state != EClientState::CONNECTION_CANCELLED)
|
while(!c && state != EClientState::CONNECTION_CANCELLED)
|
||||||
@ -287,8 +293,8 @@ void CServerHandler::justConnectToServer(const std::string & addr, const ui16 po
|
|||||||
try
|
try
|
||||||
{
|
{
|
||||||
c = std::make_shared<CConnection>(
|
c = std::make_shared<CConnection>(
|
||||||
addr.size() ? addr : hostAddress,
|
connectionAddress,
|
||||||
port ? port : hostPort,
|
connectionPort,
|
||||||
NAME, uuid);
|
NAME, uuid);
|
||||||
}
|
}
|
||||||
catch(std::runtime_error & error)
|
catch(std::runtime_error & error)
|
||||||
@ -305,12 +311,12 @@ void CServerHandler::justConnectToServer(const std::string & addr, const ui16 po
|
|||||||
|
|
||||||
c->handler = std::make_shared<boost::thread>(&CServerHandler::threadHandleConnection, this);
|
c->handler = std::make_shared<boost::thread>(&CServerHandler::threadHandleConnection, this);
|
||||||
|
|
||||||
if(!addr.empty() && addr != getHostAddress())
|
if(!addr.empty() && addr != getHostAddressFromSettings())
|
||||||
{
|
{
|
||||||
Settings serverAddress = settings.write["server"]["server"];
|
Settings serverAddress = settings.write["server"]["server"];
|
||||||
serverAddress->String() = addr;
|
serverAddress->String() = addr;
|
||||||
}
|
}
|
||||||
if(port && port != getHostPort())
|
if(port && port != getHostPortFromSettings())
|
||||||
{
|
{
|
||||||
Settings serverPort = settings.write["server"]["port"];
|
Settings serverPort = settings.write["server"]["port"];
|
||||||
serverPort->Integer() = port;
|
serverPort->Integer() = port;
|
||||||
@ -394,7 +400,7 @@ std::string CServerHandler::getDefaultPortStr()
|
|||||||
return std::to_string(getDefaultPort());
|
return std::to_string(getDefaultPort());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string CServerHandler::getHostAddress() const
|
std::string CServerHandler::getHostAddressFromSettings() const
|
||||||
{
|
{
|
||||||
if(settings["session"]["lobby"].isNull() || !settings["session"]["lobby"].Bool())
|
if(settings["session"]["lobby"].isNull() || !settings["session"]["lobby"].Bool())
|
||||||
return settings["server"]["server"].String();
|
return settings["server"]["server"].String();
|
||||||
@ -405,7 +411,7 @@ std::string CServerHandler::getHostAddress() const
|
|||||||
return settings["session"]["address"].String();
|
return settings["session"]["address"].String();
|
||||||
}
|
}
|
||||||
|
|
||||||
ui16 CServerHandler::getHostPort() const
|
ui16 CServerHandler::getHostPortFromSettings() const
|
||||||
{
|
{
|
||||||
if(settings["session"]["lobby"].isNull() || !settings["session"]["lobby"].Bool())
|
if(settings["session"]["lobby"].isNull() || !settings["session"]["lobby"].Bool())
|
||||||
return getDefaultPort();
|
return getDefaultPort();
|
||||||
@ -995,7 +1001,7 @@ void CServerHandler::threadRunServer()
|
|||||||
setThreadName("runServer");
|
setThreadName("runServer");
|
||||||
const std::string logName = (VCMIDirs::get().userLogsPath() / "server_log.txt").string();
|
const std::string logName = (VCMIDirs::get().userLogsPath() / "server_log.txt").string();
|
||||||
std::string comm = VCMIDirs::get().serverPath().string()
|
std::string comm = VCMIDirs::get().serverPath().string()
|
||||||
+ " --port=" + std::to_string(getHostPort())
|
+ " --port=" + std::to_string(getHostPortFromSettings())
|
||||||
+ " --run-by-client"
|
+ " --run-by-client"
|
||||||
+ " --uuid=" + uuid;
|
+ " --uuid=" + uuid;
|
||||||
if(settings["session"]["lobby"].Bool() && settings["session"]["host"].Bool())
|
if(settings["session"]["lobby"].Bool() && settings["session"]["host"].Bool())
|
||||||
|
@ -121,8 +121,8 @@ public:
|
|||||||
|
|
||||||
CServerHandler();
|
CServerHandler();
|
||||||
|
|
||||||
std::string getHostAddress() const;
|
std::string getHostAddressFromSettings() const;
|
||||||
ui16 getHostPort() const;
|
ui16 getHostPortFromSettings() const;
|
||||||
|
|
||||||
void resetStateForLobby(const StartInfo::EMode mode, const std::vector<std::string> * names = nullptr);
|
void resetStateForLobby(const StartInfo::EMode mode, const std::vector<std::string> * names = nullptr);
|
||||||
void startLocalServerAndConnect();
|
void startLocalServerAndConnect();
|
||||||
|
@ -534,8 +534,8 @@ CSimpleJoinScreen::CSimpleJoinScreen(bool host)
|
|||||||
|
|
||||||
inputAddress->giveFocus();
|
inputAddress->giveFocus();
|
||||||
}
|
}
|
||||||
inputAddress->setText(host ? CServerHandler::localhostAddress : CSH->getHostAddress(), true);
|
inputAddress->setText(host ? CServerHandler::localhostAddress : CSH->getHostAddressFromSettings(), true);
|
||||||
inputPort->setText(std::to_string(CSH->getHostPort()), true);
|
inputPort->setText(std::to_string(CSH->getHostPortFromSettings()), true);
|
||||||
|
|
||||||
buttonCancel = std::make_shared<CButton>(Point(142, 142), AnimationPath::builtin("MUBCANC.DEF"), CGI->generaltexth->zelp[561], std::bind(&CSimpleJoinScreen::leaveScreen, this), EShortcut::GLOBAL_CANCEL);
|
buttonCancel = std::make_shared<CButton>(Point(142, 142), AnimationPath::builtin("MUBCANC.DEF"), CGI->generaltexth->zelp[561], std::bind(&CSimpleJoinScreen::leaveScreen, this), EShortcut::GLOBAL_CANCEL);
|
||||||
statusBar = CGStatusBar::create(std::make_shared<CPicture>(background->getSurface(), Rect(7, 186, 218, 18), 7, 186));
|
statusBar = CGStatusBar::create(std::make_shared<CPicture>(background->getSurface(), Rect(7, 186, 218, 18), 7, 186));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user