diff options
Diffstat (limited to 'src/progs/manaplus/client.cpp')
-rw-r--r-- | src/progs/manaplus/client.cpp | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/progs/manaplus/client.cpp b/src/progs/manaplus/client.cpp index d8ba7e1c2..6b05b0809 100644 --- a/src/progs/manaplus/client.cpp +++ b/src/progs/manaplus/client.cpp @@ -497,6 +497,7 @@ void Client::gameInit() loginData.password = settings.options.password; LoginDialog::savedPassword = settings.options.password; loginData.remember = (serverConfig.getValue("remember", 1) != 0); + loginData.remember_password = (serverConfig.getValue("remember_password", 1) != 0); loginData.registerLogin = false; if (mCurrentServer.hostname.empty()) @@ -517,6 +518,9 @@ void Client::gameInit() if (loginData.username.empty() && loginData.remember) loginData.username = serverConfig.getValue("username", ""); + + if (loginData.password.empty() && loginData.remember_password) + loginData.password = serverConfig.getValue("password", ""); if (mState != State::ERROR) mState = State::CHOOSE_SERVER; @@ -853,16 +857,28 @@ void Client::stateConnectServer1() { loginData.username = settings.options.username; } -#ifdef SAVE_PASSWORD - LoginDialog::savedPassword = loginData.remember ? - serverConfig.getValue("password", "") : ""; - loginData.password = LoginDialog::savedPassword; - settings.options.password = LoginDialog::savedPassword; -#endif + + if (settings.options.password.empty()) + { + if (loginData.remember_password) + { + LoginDialog::savedPassword = serverConfig.getValue("password", ""); + loginData.password = LoginDialog::savedPassword; + settings.options.password = LoginDialog::savedPassword; + } + else + loginData.password.clear(); + } + else + { + loginData.password = settings.options.password; + } + settings.login = loginData.username; WindowManager::updateTitle(); loginData.remember = (serverConfig.getValue("remember", 1) != 0); + loginData.remember_password = (serverConfig.getValue("remember_password", 1) != 0); Net::connectToServer(mCurrentServer); #ifdef USE_MUMBLE @@ -1638,13 +1654,11 @@ int Client::gameExec() case State::ERROR: BLOCK_START("Client::gameExec State::ERROR") config.write(); -#ifdef SAVE_PASSWORD if (errorMessage == "Wrong password.") { serverConfig.setValue("password", ""); serverConfig.write(); } -#endif if (mOldState == State::GAME) serverConfig.write(); logger->log1("State: ERROR"); |