Avoid ugly exception in log on unknown inv type

It is unexpected behavior for `ToString` to raise an exception. It
is expected to do a best-effort attempt at formatting but never fail.

Catch the exception and simply print unknown inv types as hexadecimal.

Fixes #9110.
This commit is contained in:
Wladimir J. van der Laan 2016-11-09 11:09:16 +01:00
parent e9847303e7
commit e9f25ddd00

View file

@ -181,7 +181,11 @@ std::string CInv::GetCommand() const
std::string CInv::ToString() const std::string CInv::ToString() const
{ {
return strprintf("%s %s", GetCommand(), hash.ToString()); try {
return strprintf("%s %s", GetCommand(), hash.ToString());
} catch(const std::out_of_range &) {
return strprintf("0x%08x %s", type, hash.ToString());
}
} }
const std::vector<std::string> &getAllNetMessageTypes() const std::vector<std::string> &getAllNetMessageTypes()