Merge pull request #5513

bc94ba4 wallet: distinguish between empty and absent attributes (moneromooo-monero)
This commit is contained in:
luigi1111 2019-07-24 13:59:19 -05:00
commit 407683a38c
No known key found for this signature in database
GPG key ID: F4ACA0183641E010
4 changed files with 16 additions and 6 deletions

View file

@ -11384,12 +11384,13 @@ void wallet2::set_attribute(const std::string &key, const std::string &value)
m_attributes[key] = value; m_attributes[key] = value;
} }
std::string wallet2::get_attribute(const std::string &key) const bool wallet2::get_attribute(const std::string &key, std::string &value) const
{ {
std::unordered_map<std::string, std::string>::const_iterator i = m_attributes.find(key); std::unordered_map<std::string, std::string>::const_iterator i = m_attributes.find(key);
if (i == m_attributes.end()) if (i == m_attributes.end())
return std::string(); return false;
return i->second; value = i->second;
return true;
} }
void wallet2::set_description(const std::string &description) void wallet2::set_description(const std::string &description)
@ -11399,7 +11400,10 @@ void wallet2::set_description(const std::string &description)
std::string wallet2::get_description() const std::string wallet2::get_description() const
{ {
return get_attribute(ATTRIBUTE_DESCRIPTION); std::string s;
if (get_attribute(ATTRIBUTE_DESCRIPTION, s))
return s;
return "";
} }
const std::pair<std::map<std::string, std::string>, std::vector<std::string>>& wallet2::get_account_tags() const std::pair<std::map<std::string, std::string>, std::vector<std::string>>& wallet2::get_account_tags()

View file

@ -1247,7 +1247,7 @@ private:
*/ */
const char* const ATTRIBUTE_DESCRIPTION = "wallet2.description"; const char* const ATTRIBUTE_DESCRIPTION = "wallet2.description";
void set_attribute(const std::string &key, const std::string &value); void set_attribute(const std::string &key, const std::string &value);
std::string get_attribute(const std::string &key) const; bool get_attribute(const std::string &key, std::string &value) const;
crypto::public_key get_multisig_signer_public_key(const crypto::secret_key &spend_skey) const; crypto::public_key get_multisig_signer_public_key(const crypto::secret_key &spend_skey) const;
crypto::public_key get_multisig_signer_public_key() const; crypto::public_key get_multisig_signer_public_key() const;

View file

@ -2102,7 +2102,12 @@ namespace tools
return false; return false;
} }
res.value = m_wallet->get_attribute(req.key); if (!m_wallet->get_attribute(req.key, res.value))
{
er.code = WALLET_RPC_ERROR_CODE_ATTRIBUTE_NOT_FOUND;
er.message = "Attribute not found.";
return false;
}
return true; return true;
} }
bool wallet_rpc_server::on_get_tx_key(const wallet_rpc::COMMAND_RPC_GET_TX_KEY::request& req, wallet_rpc::COMMAND_RPC_GET_TX_KEY::response& res, epee::json_rpc::error& er, const connection_context *ctx) bool wallet_rpc_server::on_get_tx_key(const wallet_rpc::COMMAND_RPC_GET_TX_KEY::request& req, wallet_rpc::COMMAND_RPC_GET_TX_KEY::response& res, epee::json_rpc::error& er, const connection_context *ctx)

View file

@ -75,3 +75,4 @@
#define WALLET_RPC_ERROR_CODE_SIGN_UNSIGNED -42 #define WALLET_RPC_ERROR_CODE_SIGN_UNSIGNED -42
#define WALLET_RPC_ERROR_CODE_NON_DETERMINISTIC -43 #define WALLET_RPC_ERROR_CODE_NON_DETERMINISTIC -43
#define WALLET_RPC_ERROR_CODE_INVALID_LOG_LEVEL -44 #define WALLET_RPC_ERROR_CODE_INVALID_LOG_LEVEL -44
#define WALLET_RPC_ERROR_CODE_ATTRIBUTE_NOT_FOUND -45