From 55566630c60d23993a52ed54c95e7891f4588d57 Mon Sep 17 00:00:00 2001 From: furszy Date: Wed, 14 Sep 2022 12:13:58 -0300 Subject: rpc: treat univalue type check error as RPC_TYPE_ERROR, not RPC_MISC_ERROR By throwing a custom exception from `Univalue::checkType` (instead of a plain std::runtime_error) and catching it on the RPC server request handler. So we properly return RPC_TYPE_ERROR (-3) on arg type errors and not the general RPC_MISC_ERROR (-1). --- src/univalue/include/univalue.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/univalue/include') diff --git a/src/univalue/include/univalue.h b/src/univalue/include/univalue.h index ccaf56a271..850d0a1cbc 100644 --- a/src/univalue/include/univalue.h +++ b/src/univalue/include/univalue.h @@ -19,6 +19,11 @@ class UniValue { public: enum VType { VNULL, VOBJ, VARR, VSTR, VNUM, VBOOL, }; + class type_error : public std::runtime_error + { + using std::runtime_error::runtime_error; + }; + UniValue() { typ = VNULL; } UniValue(UniValue::VType initialType, const std::string& initialStr = "") { typ = initialType; -- cgit v1.2.3