mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-22 07:22:25 +00:00
Merge pull request #2906
27aa8ce9
net_utils_base: fix peer list parsing (moneromooo-monero)fe5ab2c4
epee: fix kv_unserialize return value when a field is not found (moneromooo-monero)
This commit is contained in:
commit
f51bac990e
2 changed files with 27 additions and 5 deletions
|
@ -166,15 +166,37 @@ namespace net_utils
|
||||||
|
|
||||||
BEGIN_KV_SERIALIZE_MAP()
|
BEGIN_KV_SERIALIZE_MAP()
|
||||||
uint8_t type = is_store ? this_ref.get_type_id() : 0;
|
uint8_t type = is_store ? this_ref.get_type_id() : 0;
|
||||||
epee::serialization::selector<is_store>::serialize(type, stg, hparent_section, "type");
|
if (!epee::serialization::selector<is_store>::serialize(type, stg, hparent_section, "type"))
|
||||||
|
return false;
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case ipv4_network_address::ID:
|
case ipv4_network_address::ID:
|
||||||
|
{
|
||||||
if (!is_store)
|
if (!is_store)
|
||||||
|
{
|
||||||
const_cast<network_address&>(this_ref) = ipv4_network_address{0, 0};
|
const_cast<network_address&>(this_ref) = ipv4_network_address{0, 0};
|
||||||
KV_SERIALIZE(template as_mutable<ipv4_network_address>());
|
auto &addr = this_ref.template as_mutable<ipv4_network_address>();
|
||||||
|
if (epee::serialization::selector<is_store>::serialize(addr, stg, hparent_section, "addr"))
|
||||||
|
MDEBUG("Found as addr: " << this_ref.str());
|
||||||
|
else if (epee::serialization::selector<is_store>::serialize(addr, stg, hparent_section, "template as<ipv4_network_address>()"))
|
||||||
|
MDEBUG("Found as template as<ipv4_network_address>(): " << this_ref.str());
|
||||||
|
else if (epee::serialization::selector<is_store>::serialize(addr, stg, hparent_section, "template as_mutable<ipv4_network_address>()"))
|
||||||
|
MDEBUG("Found as template as_mutable<ipv4_network_address>(): " << this_ref.str());
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MWARNING("Address not found");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto &addr = this_ref.template as_mutable<ipv4_network_address>();
|
||||||
|
if (!epee::serialization::selector<is_store>::serialize(addr, stg, hparent_section, "addr"))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default: MERROR("Unsupported network address type: " << type); return false;
|
}
|
||||||
|
default: MERROR("Unsupported network address type: " << (unsigned)type); return false;
|
||||||
}
|
}
|
||||||
END_KV_SERIALIZE_MAP()
|
END_KV_SERIALIZE_MAP()
|
||||||
};
|
};
|
||||||
|
|
|
@ -73,7 +73,7 @@ namespace epee
|
||||||
template<class serializible_type, class t_storage>
|
template<class serializible_type, class t_storage>
|
||||||
static bool unserialize_t_obj(serializible_type& obj, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname)
|
static bool unserialize_t_obj(serializible_type& obj, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname)
|
||||||
{
|
{
|
||||||
typename t_storage::hsection hchild_section = stg.open_section(pname, hparent_section, true);
|
typename t_storage::hsection hchild_section = stg.open_section(pname, hparent_section, false);
|
||||||
if(!hchild_section) return false;
|
if(!hchild_section) return false;
|
||||||
return obj._load(stg, hchild_section);
|
return obj._load(stg, hchild_section);
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@ namespace epee
|
||||||
static bool unserialize_t_obj(enableable<serializible_type>& obj, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname)
|
static bool unserialize_t_obj(enableable<serializible_type>& obj, t_storage& stg, typename t_storage::hsection hparent_section, const char* pname)
|
||||||
{
|
{
|
||||||
obj.enabled = false;
|
obj.enabled = false;
|
||||||
typename t_storage::hsection hchild_section = stg.open_section(pname, hparent_section, true);
|
typename t_storage::hsection hchild_section = stg.open_section(pname, hparent_section, false);
|
||||||
if(!hchild_section) return false;
|
if(!hchild_section) return false;
|
||||||
obj.enabled = true;
|
obj.enabled = true;
|
||||||
return obj.v._load(stg, hchild_section);
|
return obj.v._load(stg, hchild_section);
|
||||||
|
|
Loading…
Reference in a new issue