diff --git a/src/jamidht/jamiaccount.cpp b/src/jamidht/jamiaccount.cpp index 97db9b72cc91018ae42d3718d6791e862005a852..cb1b3a5639f371b7813afec181098512c1951769 100644 --- a/src/jamidht/jamiaccount.cpp +++ b/src/jamidht/jamiaccount.cpp @@ -936,10 +936,11 @@ JamiAccount::loadConfig() std::error_code ec; std::filesystem::remove(cachePath_ / "dhtproxy", ec); } - loadAccount(config().archive_password_scheme, - config().archive_password, - config().archive_pin, - config().archive_path); + auto credentials = consumeConfigCredentials(); + loadAccount(credentials.archive_password_scheme, + credentials.archive_password, + credentials.archive_pin, + credentials.archive_path); } bool diff --git a/src/jamidht/jamiaccount.h b/src/jamidht/jamiaccount.h index 347deb409a5941c8dea2950ad39416dfa985a13c..09d72334b4c4d7b7dfe02cc9730a1029e9804e36 100644 --- a/src/jamidht/jamiaccount.h +++ b/src/jamidht/jamiaccount.h @@ -133,6 +133,12 @@ public: return *static_cast<const JamiAccountConfig*>(&Account::config()); } + JamiAccountConfig::Credentials + consumeConfigCredentials() { + auto conf = static_cast<JamiAccountConfig*>(config_.get()); + return std::move(conf->credentials); + } + void loadConfig() override; /** diff --git a/src/jamidht/jamiaccount_config.cpp b/src/jamidht/jamiaccount_config.cpp index 552d2f66b600b60a910cbe753207e31f324322fd..aa841b267c0479e384112533702cc4030f92147f 100644 --- a/src/jamidht/jamiaccount_config.cpp +++ b/src/jamidht/jamiaccount_config.cpp @@ -207,11 +207,11 @@ JamiAccountConfig::fromMap(const std::map<std::string, std::string>& details) parseBool(details, libjami::Account::ConfProperties::DHT::PUBLIC_IN_CALLS, dhtPublicInCalls); // parseString(details, libjami::Account::ConfProperties::USERNAME, username); - parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD, archive_password); - parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD_SCHEME, archive_password_scheme); - parseString(details, libjami::Account::ConfProperties::ARCHIVE_PIN, archive_pin); - std::transform(archive_pin.begin(), archive_pin.end(), archive_pin.begin(), ::toupper); - parseString(details, libjami::Account::ConfProperties::ARCHIVE_PATH, archive_path); + parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD, credentials.archive_password); + parseString(details, libjami::Account::ConfProperties::ARCHIVE_PASSWORD_SCHEME, credentials.archive_password_scheme); + parseString(details, libjami::Account::ConfProperties::ARCHIVE_PIN, credentials.archive_pin); + std::transform(credentials.archive_pin.begin(), credentials.archive_pin.end(), credentials.archive_pin.begin(), ::toupper); + parseString(details, libjami::Account::ConfProperties::ARCHIVE_PATH, credentials.archive_path); parseString(details, libjami::Account::ConfProperties::DEVICE_NAME, deviceName); auto oldProxyServer = proxyServer, oldProxyServerList = proxyListUrl; diff --git a/src/jamidht/jamiaccount_config.h b/src/jamidht/jamiaccount_config.h index 6fbda16cd80928bc78eaf223de6f62666d236259..4cbb5a4818ccb4dcd152d5c6af6d79efd4fd8d28 100644 --- a/src/jamidht/jamiaccount_config.h +++ b/src/jamidht/jamiaccount_config.h @@ -69,10 +69,12 @@ struct JamiAccountConfig : public SipAccountBaseConfig { std::string archivePath {"archive.gz"}; bool archiveHasPassword {true}; // not saved, only used client->daemon - std::string archive_password_scheme; - std::string archive_password; - std::string archive_pin; - std::string archive_path; + struct Credentials { + std::string archive_password_scheme; + std::string archive_password; + std::string archive_pin; + std::string archive_path; + } credentials; std::string receipt {}; std::vector<uint8_t> receiptSignature {};