diff --git a/src/components/settings/AccountSettingsModel.cpp b/src/components/settings/AccountSettingsModel.cpp
index 1995080de..f89ef3ca8 100644
--- a/src/components/settings/AccountSettingsModel.cpp
+++ b/src/components/settings/AccountSettingsModel.cpp
@@ -138,9 +138,16 @@ QVariantMap AccountSettingsModel::getProxyConfigDescription (const shared_ptr
getCore()->createNatPolicy();
map["iceEnabled"] = natPolicy->iceEnabled();
map["turnEnabled"] = natPolicy->turnEnabled();
- map["stunServer"] = Utils::coreStringToAppString(natPolicy->getStunServer());
- map["turnUser"] = Utils::coreStringToAppString(natPolicy->getStunServerUsername());
- shared_ptr authInfo = proxyConfig->findAuthInfo();
+
+ const string &turnUser(natPolicy->getStunServerUsername());
+ const string &stunServer(natPolicy->getStunServer());
+
+ map["turnUser"] = Utils::coreStringToAppString(turnUser);
+ map["stunServer"] = Utils::coreStringToAppString(stunServer);
+
+ shared_ptr authInfo = CoreManager::getInstance()->getCore()->findAuthInfo(
+ "", turnUser, stunServer
+ );
map["turnPassword"] = authInfo ? Utils::coreStringToAppString(authInfo->getPassword()) : QString("");
return map;
@@ -233,29 +240,33 @@ bool AccountSettingsModel::addOrUpdateProxyConfig (
natPolicy = proxyConfig->getCore()->createNatPolicy();
natPolicy->enableIce(data["iceEnabled"].toBool());
natPolicy->enableStun(data["iceEnabled"].toBool());
- natPolicy->enableTurn(data["turnEnabled"].toBool());
- natPolicy->setStunServer(Utils::appStringToCoreString(data["stunServer"].toString()));
- natPolicy->setStunServerUsername(Utils::appStringToCoreString(data["turnUser"].toString()));
- shared_ptr authInfo = proxyConfig->findAuthInfo();
- shared_ptr core = proxyConfig->getCore();
+ const string turnUser(Utils::appStringToCoreString(data["turnUser"].toString()));
+ const string stunServer(Utils::appStringToCoreString(data["stunServer"].toString()));
+
+ natPolicy->enableTurn(data["turnEnabled"].toBool());
+ natPolicy->setStunServerUsername(turnUser);
+ natPolicy->setStunServer(stunServer);
+
+ shared_ptr core(proxyConfig->getCore());
+ shared_ptr authInfo(core->findAuthInfo("", turnUser, stunServer));
if (authInfo) {
- shared_ptr clonedAuthInfo = authInfo->clone();
+ shared_ptr clonedAuthInfo(authInfo->clone());
+ clonedAuthInfo->setUserid(turnUser);
+ clonedAuthInfo->setUsername(turnUser);
clonedAuthInfo->setPassword(Utils::appStringToCoreString(data["turnPassword"].toString()));
- core->removeAuthInfo(authInfo);
core->addAuthInfo(clonedAuthInfo);
- } else {
- authInfo = linphone::Factory::get()->createAuthInfo(
- Utils::appStringToCoreString(data["turnUser"].toString()),
- Utils::appStringToCoreString(data["turnUser"].toString()),
+ core->removeAuthInfo(authInfo);
+ } else
+ core->addAuthInfo(linphone::Factory::get()->createAuthInfo(
+ turnUser,
+ turnUser,
Utils::appStringToCoreString(data["turnPassword"].toString()),
"",
"",
""
- );
- core->addAuthInfo(authInfo);
- }
+ ));
return addOrUpdateProxyConfig(proxyConfig);
}
diff --git a/src/components/settings/SettingsModel.cpp b/src/components/settings/SettingsModel.cpp
index c61d32e57..d30b75155 100644
--- a/src/components/settings/SettingsModel.cpp
+++ b/src/components/settings/SettingsModel.cpp
@@ -799,30 +799,37 @@ void SettingsModel::setTurnUser (const QString &user) {
// -----------------------------------------------------------------------------
QString SettingsModel::getTurnPassword () const {
- shared_ptr core = CoreManager::getInstance()->getCore();
- shared_ptr natPolicy = core->getNatPolicy();
- shared_ptr authInfo = core->findAuthInfo(natPolicy->getStunServerUsername(), "", "");
-
+ shared_ptr core(CoreManager::getInstance()->getCore());
+ shared_ptr natPolicy(core->getNatPolicy());
+ shared_ptr authInfo(core->findAuthInfo(
+ "",
+ natPolicy->getStunServerUsername(),
+ natPolicy->getStunServer()
+ ));
return authInfo ? Utils::coreStringToAppString(authInfo->getPassword()) : QString("");
}
void SettingsModel::setTurnPassword (const QString &password) {
- shared_ptr core = CoreManager::getInstance()->getCore();
- shared_ptr natPolicy = core->getNatPolicy();
-
- const string username = natPolicy->getStunServerUsername();
- shared_ptr authInfo = core->findAuthInfo(username, "", "");
+ shared_ptr core(CoreManager::getInstance()->getCore());
+ shared_ptr natPolicy(core->getNatPolicy());
+ const string &turnUser(natPolicy->getStunServerUsername());
+ shared_ptr authInfo(core->findAuthInfo("", turnUser, natPolicy->getStunServer()));
if (authInfo) {
- shared_ptr clonedAuthInfo = authInfo->clone();
+ shared_ptr clonedAuthInfo(authInfo->clone());
clonedAuthInfo->setPassword(Utils::appStringToCoreString(password));
- core->removeAuthInfo(authInfo);
core->addAuthInfo(clonedAuthInfo);
- } else {
- authInfo = linphone::Factory::get()->createAuthInfo(username, username, Utils::appStringToCoreString(password), "", "", "");
- core->addAuthInfo(authInfo);
- }
+ core->removeAuthInfo(authInfo);
+ } else
+ core->addAuthInfo(linphone::Factory::get()->createAuthInfo(
+ turnUser,
+ turnUser,
+ Utils::appStringToCoreString(password),
+ "",
+ "",
+ ""
+ ));
emit turnPasswordChanged(password);
}